Intereting Posts
Как избежать повторения команд sed при добавлении сайтов в лак? Почему невозможно изменить счетчик inode файловой системы ext? Как я могу обойти программу с ошибкой, если есть * любой * stdin? Как получить сумму MD5 содержимого каталога в виде одной суммы? Как интегрировать и использовать github в атоме Настроить dnssec с помощью dnsmasq, как я могу доверять общедоступному DNS Google? Сценарий оболочки для разблокировки гнома-ключа для школьного интернета при входе в систему Как использовать ограничение cgroup в системных срезах пользователей? Bash, если утверждение не работает должным образом Не удается войти в phpmyadmin без использования пароля В цикле над массивом добавьте элемент в массив Масштаб ssh перенаправленный графический интерфейс Конфигурация двойной загрузки с SSD и HDD Сортировка одного файла по строке на основе другого файла Проверьте некоторое свойство для каждой строки файла

перекрестная компиляция gcc не выполняется

Я пытаюсь построить кросс-компиляцию gcc для ARM. Это будет обновление существующего перекрестного компилятора gcc ARM. Строка работает нормально, пока не дойдет до создания libstdc ++ после успешного создания libgcc1.

Ошибка:

<gcc-object-path>/./gcc/xgcc -shared-libgcc -B<gcc-object-path>/./gcc -nostdinc++ -L<gcc-object-path>/<target>/libstdc++-v3/src -L<gcc-object-path>/<target>/libstdc++-v3/src/.libs -L<gcc-object-path>/<target>/libstdc++-v3/libsupc++/.libs -B<sysroot>/<target>/bin/ -B<sysroot>/<target>/lib/ -isystem <sysroot>/<target>/include -isystem <sysroot>/<target>/sys-include --sysroot=<boot-strap-xgcc-sysroot> -x c++-header -nostdinc++ -g -Os -I<gcc-object-path>/<target>/libstdc++-v3/include/<target> -I<gcc-object-path>/<target>/libstdc++-v3/include -I<gcc-source-path>/libstdc++-v3/libsupc++ -O2 -g -std=gnu++0x <gcc-source-path>/libstdc++-v3/include/precompiled/stdc++.h \ -o <target>/bits/stdc++.h.gch/O2ggnu++0x.gch <gcc-source-path>/libstdc++-v3/include/precompiled/stdc++.h:52:20: fatal error: ccomplex: No such file or directory #include <ccomplex> ^ compilation terminated. 

find gcc-object-path -name ccomplex -print показывает:

 <gcc-object-path>/<target>/libstdc++-v3/include/tr1/ccomplex <gcc-object-path>/<target>/libstdc++-v3/include/ccomplex 

Команда компиляции имеет

 -I<gcc-object-path>/<target>/libstdc++-v3/include 

в теме.

 <gcc-object-path>/<target>/libstdc++-v3/include/ccommon 

является символической ссылкой на

 <gcc-source-path>/libstdc++-v3/include/c_std/ccomplex 

Но этот файл не существует в источнике в этом месте, поэтому он является сломанной символической ссылкой, и компиляция не выполняется. Однако файл ccomplex существует в исходном дереве в трех других местах. Есть еще 6 таких символических ссылок, которые также нарушены.

Глядя на libstdc ++ – v3 / include / Makefile, который генерирует эти символические ссылки, он ожидает найти все файлы c_base_headers в том же месте в исходном дереве, но это не так. Как это должно работать?

Параметры настройки gcc:

 gcc-${GCC_VERSION}/configure --target=$CONF_TARGET --prefix=${PREFIX} --exec_prefix=${PREFIX} --bindir=${PREFIX}/bin --sbindir=${PREFIX}/bin --libexecdir=${PREFIX}/libexec --datadir=${PREFIX}/share --sysconfdir=${PREFIX}/etc --sharedstatedir=${PREFIX}/share/com --localstatedir=${PREFIX}/var --libdir=${PREFIX}/lib --includedir=${PREFIX}/include --oldincludedir=${PREFIX}/include --infodir=${PREFIX}/share/info --mandir=${PREFIX}/share/man --enable-largefile --disable-nls --enable-ipv6 --with-gnu-ld --enable-shared --enable-languages=c,c++,objc,fortran --enable-threads=posix --disable-multilib --enable-c99 --enable-long-long --enable-symvers-gnu --enable-libstdcxx-pch --program-prefix=${CMD_PREFIX} --enable-target-optspace --enable-cheaders=c_std --disable-bootstrap --disable-libgomp --disable-libmudflap --with-float=soft --with-sysroot=${NEWSYSROOT} --with-build-sysroot=${SYSROOT} --with-build-time-tools=${INSTALLDIR}/${PREFIX}/${CONF_TARGET}/bin --disable-libunwind-exceptions --disable-libssp --enable-__cxa_atexit 

Какую среду вы используете? И какова ваша целевая среда?

У ARM есть некоторые инструментальные цепочки, доступные для загрузки на сайте разработчика ARM .

Возможно, вам понадобится сделать доступными библиотеки и файлы заголовков для вашей целевой среды. Для FreeBSD это будет подходящий файл base.txz, который необходимо распаковать в нужном месте.

Для 386 и amd64 FreeBSD v 11. * i существуют существующие кросс-компиляторы GCC для руки. Или быть конкретным arm64 / aarch64. Даже с Адой. То есть в портах, найденных в / usr / ports / lang / gnatcross *.

Если вы google, должно быть легко уметь компилировать общий кросс-компилятор, используя несколько параметров настройки. Многие используют руку в качестве примера при компиляции кросс-компилятора.

Если у вас есть малиновый PI, который является либо аркой, либо архитектурой aarch64, у вас может быть хорошая родная среда. Все, что вам нужно, это избегать того, что зависит от операционной системы.

RPI имеет несколько доступных операционных систем, включая: FreeBSD, Raspbian и другие версии Linux и BSD.

Я работаю над кросс-компиляцией GCC для aarch64 FreeBSD 12. Это требует некоторых изменений. Поэтому я скопировал задействованные порты и изменил их. Трудный бит – это выяснить, как перекрестно компилировать gcc. И узнайте, какие параметры нужно отключить.