Это заняло некоторое время, чтобы получить право.У меня была эта проблема при кросс-компиляции в Ubuntu для цели ARM.Я решил это с помощью:
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf
Обратите внимание, что CFLAGS не используется с autogen.sh/configure, при его использовании выдается ошибка: «configure: error: компилятор C не может создавать исполняемые файлы».В среде сборки я использовал скрипт autogen.sh, если у вас нет сценария autogen.sh, замените ./autogen.sh на ./configure в приведенной выше команде.Я запустил config.guess в целевой системе, чтобы получить параметр --host.
После успешного запуска autogen.sh/configure скомпилировать с:
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib CFLAGS="-march=... -mcpu=... etc." make
CFLAGS, которые я выбрал для использованиябыли: "-march = armv5te -fno-tree-vectorize -mthumb-interwork -mcpu = arm926ej-s".Для правильной настройки всех включаемых каталогов потребуется некоторое время: вам может потребоваться, чтобы некоторые включения указывали на ваш кросс-компилятор, а некоторые - на корневую файловую систему, и, скорее всего, будут некоторые конфликты.
Я уверен, что это не идеальный ответ.И я до сих пор вижу некоторые каталоги включения, указывающие на /, а не на / ccrootfs в Makefiles.Хотелось бы узнать, как это исправить.Надеюсь, это кому-нибудь поможет.