Как переопределить путь кросс-компилятора gcc 'sysroot'? - PullRequest
2 голосов
/ 11 июля 2019

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 для цепочки инструментов?

...