GCC не компилирует
Skaarj 4 октября, 2006 - 14:46
После обновления системы престал компилировать gcc. Пробовал разные версии. В инете нашел подобные проблемы, но без решения(
/usr/lib/gcc/i686-pc-linux-gnu/3.4.5/../../../../i686-pc-linux-gnu/bin/ld:/usr/lib/gcc/i686-pc-linux-gnu/3.4.5/../../../libc.so: file format not recognized; treating as linker script /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/../../../../i686-pc-linux-gnu/bin/ld:/usr/lib/gcc/i686-pc-linux-gnu/3.4.5/../../../libc.so:5: syntax error collect2: ld returned 1 exit status
И еще: при обновлении(вроде glibc) 2 раза была ошибка internal compiler error. Но потом всё собралось. Память проверил, всё хорошо.
»
- Для комментирования войдите или зарегистрируйтесь
ld это НЕ
ld это НЕ компилятор -- это сборщик, и выше он Вам говорит, что не может загрузить библиотеку libc.so ДЛя того чтобы узнать что это значит нужно узнать следующее:
1. вывод gcc-config -l
2. что с библотектой по пути обозначенному выше.
P.S. возможно Вам поможет fix_libtool_files.sh
gcc сейчас стоит
gcc сейчас стоит четвёртый 4.1.1, но никакая другая версия(и эта тоже) не работают, С библиотекой всё впорядке( я даже содержание проверял)
fix_libtool_files.sh пробовал, поправил кое-что, но ничего в итоге не изменилось. тк libc.so принадлежит glibc, то если я его соберу на другом компе и поставлю в систему, это сработает?
_________________
Gentoo Linux - We Use The Power!!!
А какая система
А какая система - случаем не x86_64?
Я сталкивался с похожей ошибкой на amd64 при обновлении до gcc-4.1.1 - не компилировался sandbox и др. пакеты.
Вылечилось удалением кросс-компилятора под i686. Иначе, emerge почему-то брал компилятор не под ту систему...
Система
Система обычная x86
_________________
Gentoo Linux - We Use The Power!!!
Поставил glibc,
Поставил glibc, собранный на другой машине, но толку от этого никакого. Подскажите что делать? Может быть удалить новый(старый) gcc? Не переустанавливать же систему всю...
_________________
Gentoo Linux - We Use The Power!!!
Я удалил все
Я удалил все старые версии гцц(оставил 4.1.1) Собрал его на другой машине. Поставил и всё тоже самое((( не не компилирует он нивкакую!
_________________
Gentoo Linux - We Use The Power!!!
а gcc точно
а gcc точно 4.1.1?
некоторые пакеты после emerge -C могут оставлять за собой файлы (например alsa-derivers!). возможно осталась старая версия и emerge ее подхватывает.
Кстати, а gcc не компилирует в принципе или только из portage?
Т.е. он скомпилирует простейшую програмку на C (с использованием glibc)?
gcc точно 4.1.1 cooler
gcc точно 4.1.1
Вообще не компилирует!
_________________
Gentoo Linux - We Use The Power!!!
попробуйте
попробуйте обновить еще binutils.
на какую версию ссылается
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../i686-pc-linux-gnu/bin/ld?
Всмысле
Всмысле ссылается? Где это посмотреть? У меня выдаётся только это сообщение. К томуже в системе только gcc-4.1.1
_________________
Gentoo Linux - We Use The Power!!!
Вы видимо
Вы видимо как-то не очень понимаете смысл высказанных выше пожеланий:
1. нужно понять что это за ошибка
приблизительный перевод:
2. для того чтобы узнать что делать, нужно:
а) посмотреть где НА САМОМ ДЕЛЕ находится программа (../ означает каталог уровнем выше по отношению к данному). Например у меня ld ссылается (через 2 промежуточные ссылки) на /usr/x86_64-pc-linux-gnu/binutils-bin/2.17/ld
б) посмотреть где находится файл и его содержимое. Например у меня он находится в /usr/lib и содержит
(т.е. действительно является скриптом сборщика). Собственно /lib64/libc.so.6 и есть та самая библиотека (ссылается на libc-2.4.so в том же каталоге). /usr/lib64/libc_nonshared.a является нормальным архивом ar (архив скомпилированных библиотек). /usr/lib64/ld-linux-x86-64.so.2 ссылается на ld-2.4.so (в том же каталоге).
P.S. прочитайте внимательно что здесь написано и выполните все пункты.
тут находится
тут находится libc.so
А сдесь ld
Вроде всё сделал...
странно... судя
странно... судя по всему ld не нравится последняя строка в libc.so...
а можно еще на /etc/ld.so.conf посмотреть?
и какой версии у вас binutils - 2.16.1?
libc-2.4.so в
libc-2.4.so в порядке? (проверьте с помощью file)
Как давно вы обновляли систему? Портежи в актуальном состоянии?
Собрал binutils на
Собрал binutils на другой машине, поставил в систему, не помогло... Что ещё может помочь?
_________________
Gentoo Linux - We Use The Power!!!
мдас, если не
мдас, если не интересно почему, а важно чтоб работало
надо просто пересобрать весь тулчейн на другой машине и поставить из бинарников на больную.
emerge -avb gcc-config glibc binutils libstdc++-v3 gcc
да, и на больной убратьна eselect-compiler если еще остался
shell ~ # cat
Стоит binutils-2.16.1-r3
libc-2.4.so проверял выше
Систему обновлял где то 2 недели назад. Всё началось после этого обновления. После этого портежи не обновлял(всеравно ничего не собирается)
libc-2.4.so
libc-2.4.so находится в каталоге /lib Который не указан в переменной LD_PATH (т.е. сборщик пытается его найти и не может, т.к. не знает где искать). Чтобы добавить туда этот путь, надо его прописать в /etc/env.d
У меня например так:
V fajle /etc/env.d/00basic
V fajle /etc/env.d/00basic yka3al v LDPATH direktoriyu /lib, sdelal env-update no ne pomoglo. K tomuje echo $LDPATH nichego ne vyvodit. Pereustanovil gcc-config i ustanovil libstdc++-v3(ranshe ne stoyalo) no i eto ne pomoglo.
P.S. Izvinite xa translit.
Все дело в binutils!!
Все дело в binutils, которые после пересборки glibc не распознают старый скрипт ld.
Просто выполните binutils-config -l
и активируйте последний профиль (у меня [2])
binutils-config 2
U menya tolko odin
U menya tolko odin profil
#binutils-config -l
[1] i686-pc-linux-gnu-2.16.1
#binutils-config -c
i686-pc-linux-gnu-2.15.92.0.2
URA!!! Vso zarabotalo! Ya
URA!!! Vso zarabotalo! Ya sdelal binutils-config 1 --x86
Spasibo Bolshoe!
_________________
Gentoo Linux - We Use The Power!!!