LINUX.ORG.RU

GCC_NO_EXECUTABLES

 , ,


0

1

Решил скомпилить libstdc++ и вылетела такая ошибка.

configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.
Конфигурация
../gcc/libstdc++-v3/configure \
 --host=$LFS_TGT \
 --prefix=/tools \
 --disable-multilib \
 --disable-shared \
 --disable-nls \
 --disable-libstdcxx-threads \
 --disable-libstdcxx-pch \
 --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/4.8.2
Что делать?

Что же почти каждую неделю находтся кто-то с GCC_NO_EXECUTABLES? Возможно разное, чаще недостаток других библиотек. Надо смотреть config.log в директории конфигурирования. Обычно становится ясно.

io ★★
()
Последнее исправление: io (всего исправлений: 1)
Ответ на: комментарий от io

Нашел проблему, нету папки includeO_o Почему она не создалась не знаю. Gcc раньше компилил и установил в tools. Хз в чем беда.

Perpetuity
() автор топика
Ответ на: комментарий от io

Вот одну из проблем исправил, нашел инклуды и присоеденил, НО. Не видит crt1.o и crti.o из glibc. Но они были установлены через make install в /tools/lib/ Так же при тесте glibc подобную ошибку выбивало, не могло их обнаружить, так понимаю проблема в линкере, что делать?

Собственно сам тест glibc:

echo 'main(){}' > dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /tools'

Perpetuity
() автор топика
Ответ на: комментарий от Perpetuity

Можно воспользоваться -v опцией gcc ($LFS_TGT-gcc в данном случае и посмотреть с какими параметрами запускается ld (он проходит? как я понимаю нет). Смотреть -L и т.п. У ld есть verbose опция для более подробного изучения ситуации.

Вообще-то crt-файлы, если мне склероз совсем не изменяет, являются часть поддерева средства разработки, читай gcc в данном случае, а не glibc. Причем crt-файлов может быть много в разных поддиректориях. Почему в tools/lib?

io ★★
()
Ответ на: комментарий от io

Да, склероз. crt1/crti обычно в поддиректориях /usr/lib, /usr/lib32. crtbegin/crtend и т.п. в поддиректориях gcc.

io ★★
()
Ответ на: комментарий от io

Ну в общем говоря, не находит именно 2 библиотеки glibc, но вот требует их как раз таки gcc. И я не совсем понял ваше сообщение. Как собственно поправить линковку?

anonymous
()
Ответ на: комментарий от anonymous

У gcc д.б. такая опция как -dumpspecs. Выдается файл внутреннее представление которого используется для управления тем, как происходит вызов каждого из компонентов (cc1, as, ld и т.п.). В частности там есть секция startfile. Никто не мешает подменить эту секцию (например, указать полные пути для crt) и положить полученный specs-файл в требуемую точку дерева нового gcc. Вот точно не помню, кажется туда где другие «*.specs» валяются. Этот метод позволяет решить большинство подобных проблем с хаотической установкой include-файлов, библиотек и т.п. Хотя если хочется чего-то одиозно альтернативного (или cross) логичнее --sysroot и аналоги при конфигурировании.

io ★★
()
14 января 2016 г.

У меня тоже возникло. Я справился так: из /tools/lib все файлы .o скопировал в /tools/$LFS_TGT-gnu/lib и создал ссылку в /tools/$LFS_TGT-gnu на ../include

FoodChemist
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.