debian 32-bit host PC
,带有针对ARM目标的预构建跨工具链。它具有gcc交叉编译器4.1.2工具链已过时,它是在具有不同环境的另一台PC上构建的。项目在子目录中包含递归makefiles
。由于gcc编译器找不到某些库或标头,因此编译过程会导致很多错误。看起来软件包出于某种原因忽略了sysroot
路径。实际的sysroot
路径是/opt/emlix/pnx8181/sysroot
,但是GCC编译器还有另一个sysroot
路径:--with-sysroot=/opt/emlix/dld/sysroot
,不同的前缀:--prefix=/opt/emlix/dld
和不同的--with-gxx-include-dir=
< / p>
gcc编译器:
~$ arm-linux-gnueabi-gcc -v
Using built-in specs.
Target: arm-linux-gnueabi
Configured with: ../gcc/configure --target=arm-linux-gnueabi --host=i386-linux --build=i386-linux --with-sysroot=/opt/emlix/dld/sysroot --enable-__cxa_atexit --enable-c99 --disable-nls --enable-long-long --enable-threads=posix --prefix=/opt/emlix/dld --disable-libssp --disable-libgomp --disable-libmudflap --enable-languages=c,c++ --disable-libstdcxx-pch --enable-cxx-flags=-march=armv5te -Wa,-march=armv5te --with-gxx-include-dir=/opt/emlix/dld/sysroot/usr/include/c++/4.1.2 --with-versuffix= (Emlix Linux 4.1.2-1) --with-mtune=arm9e --with-arch=armv5te --enable-tls --enable-target-optspace
Thread model: posix
gcc version 4.1.2
Makefile和Rules.mk文件位于源主目录中,toolchain.mk文件位于项目配置文件夹中。
如何正确覆盖gcc编译器sysroot
选项以强制其使用正确的路径?我应该将sysroot
变量添加到toolchain.mk文件中吗?
SYSROOT := $(TOOLCHAIN)/sysroot
CONFIGURE := ./configure arm-linux --build=$(BUILD) --with-sysroot=/opt/emlix/pnx8181/sysroot --prefix=/opt/emlix/pnx8181 --with-gxx-include-dir=/opt/emlix/pnx8181
/sysroot/usr/include/c++/4.1.2
还是应该为工具链编辑主Makefile?