debian 32-bit host PC
, с предварительно созданным перекрестным набором инструментов для цели ARM.Он имеет кросс-компилятор gcc 4.1.2. Набор инструментов устарел, он был собран на другом ПК с другой средой.Проект содержит рекурсив makefiles
в подкаталогах.Процесс компиляции вызывает много ошибок, потому что компилятор gcc не может найти некоторые библиотеки или заголовки.Похоже, пакет почему-то игнорирует путь sysroot
.Фактический путь sysroot
равен /opt/emlix/pnx8181/sysroot
, но компилятор GCC имеет другой путь sysroot
: --with-sysroot=/opt/emlix/dld/sysroot
, другой префикс: --prefix=/opt/emlix/dld
и другой --with-gxx-include-dir=
компилятор 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 для цепочки инструментов?