К сожалению, я вынужден использовать gcc-4.1, и я использую debian wheezy. Поскольку gcc-4.1 не находится в репозитории, я пытаюсь построить gcc из источников.Компиляция gcc-4.1
Но я получаю ошибку компиляции:
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-gnu/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-gnu/crtn.o' is incompatible with i386 output
Похоже, что ld
выбирает неправильную версию библиотеки, но я проверил мои /usr/lib32
и /usr/lib/x86_64-linux-gnu/
и содержит эти файлы:
/usr/lib32/libc.a
/usr/lib32/libc.so
/usr/lib32/crtn.o
/usr/lib32/crti.o
/usr/lib/x86_64-linux-gnu/libc.a
/usr/lib/x86_64-linux-gnu/libc.so
/usr/lib/x86_64-linux-gnu/crtn.o
/usr/lib/x86_64-linux-gnu/crti.o
И ld
должен иметь к ним доступ
~$ echo $LIBRARY_PATH
/usr/lib/x86_64-linux-gnu:/usr/lib32/
Так что я понятия не имею, где проблема.
Спасибо, но './configure LDFLAGS =" - L/usr/lib32 "' не помогло, я попытался исправить makefile вручную, но не смог. Добавление './configure --disable-multilib ...' работало для меня. – tom
Реальная проблема, вероятно, в том, что ваш старый GCC не имеет поддержки «многократного», необходимого для сборки Debian/Ubuntu (многократный не следует путать с multilib). Последнее, что я слышал, даже последний GCC не имел этого готового, но это было недавно. В принципе, Debian/Ubuntu помещает свои файлы в нестандартные места, и компилятор их не может найти. – ams