GCC не компилирует

После обновления системы престал компилировать 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

cooler ~ # gcc -o hw helowrld.c
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../i686-pc-linux-gnu/bin/ld:/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libc.so: file format not recognized; treating as linker script
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../i686-pc-linux-gnu/bin/ld:/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../libc.so:5: syntax error
collect2: ld returned 1 exit status

Вообще не компилирует!
_________________
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 и содержит

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )

(т.е. действительно является скриптом сборщика). Собственно /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

cooler ~ # cd /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../
cooler lib # pwd
/usr/lib

А сдесь ld

# cd /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../i686-pc-linux-gnu/bin/ && pwd
/usr/i686-pc-linux-gnu/bin
# cat /usr/lib/libc.so
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-i386)
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux.so.2 ) )
# file /lib/libc.so.6 /usr/lib/libc_nonshared.a /lib/ld-linux.so.2 /lib/libc-2.4.so
/lib/libc.so.6:            symbolic link to `libc-2.4.so'
/usr/lib/libc_nonshared.a: current ar archive
/lib/ld-linux.so.2:        symbolic link to `ld-2.4.so'
/lib/libc-2.4.so:          ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped

Вроде всё сделал...

странно... судя

странно... судя по всему 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

shell ~ # cat /etc/ld.so.conf
# ld.so.conf autogenerated by env-update; make all changes to
# contents of /etc/env.d directory
/usr/local/lib
/usr/lib/opengl/nvidia/lib
/usr/i686-pc-linux-gnu/lib
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1
/opt/blackdown-jdk-1.4.2.03/jre/lib/i386/
/opt/blackdown-jdk-1.4.2.03/jre/lib/i386/native_threads/
/opt/blackdown-jdk-1.4.2.03/jre/lib/i386/client/
/opt/blackdown-jdk-1.4.2.03/jre/lib/i386/server/
/usr/games/lib

Стоит binutils-2.16.1-r3

Цитата:
libc-2.4.so в порядке? (проверьте с помощью file)
Как давно вы обновляли систему? Портежи в актуальном состоянии?

libc-2.4.so проверял выше
Систему обновлял где то 2 недели назад. Всё началось после этого обновления. После этого портежи не обновлял(всеравно ничего не собирается)

libc-2.4.so

libc-2.4.so находится в каталоге /lib Который не указан в переменной LD_PATH (т.е. сборщик пытается его найти и не может, т.к. не знает где искать). Чтобы добавить туда этот путь, надо его прописать в /etc/env.d
У меня например так:

localhost env.d # cat 04multilib
LDPATH="/lib:/usr/lib:/usr/local/lib:/lib32:/usr/lib32:/usr/local/lib32:/lib64:/usr/lib64:/usr/local/lib64"

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!!!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".