raspberry-pi-cross-compilers icon indicating copy to clipboard operation
raspberry-pi-cross-compilers copied to clipboard

Sysroot of this toolchain is incompatible to sysroot in official Raspbian images

Open rweickelt opened this issue 3 months ago • 1 comments

I am trying to cross-build a complex project with CMake and VCPKG and a sysroot configuration. My sysroot content is extracted from the official Raspbian RFS image.

Neither compilation nor linking works properly which is caused by a file layout deviation:

  • Raspbian images follow the multi-arch layout where includes are found under /usr/include/arm-linux-gnueabihf and libs under /usr/lib/arm-linux-gnueabihf
  • The sysroot delivered with these toolchains here does not have such an architecture subfolder, but puts everything directly under /usr/include or /usr/lib respectively.

Example:

  • Raspbian image: /usr/include/arm-linux-gnueabihf/sys/cdefs.h
  • This toolchain: /usr/include/sys/cfefs.h

I cannot work around by simply passing additional include paths and rpaths to the compiler/linker driver. That is because VCPKG swallows additional include paths outside of the vcpkg build tree but passes CMAKE_SYSROOT.

I would expect the sysroot of this toolchain to match Rapsbians RFS 100%, except that it contains less. The cross toolchain for Windows actually does that.

rweickelt avatar Mar 19 '24 22:03 rweickelt

Actually, I think the problem is a missing --enable-multiarch in this toolchain's configuration.

rweickelt avatar Mar 19 '24 22:03 rweickelt