Проблемы с переходом на более раннюю версию GCC

Я пытаюсь собрать из исходного кода компилятор для языка программирования Cyclone. Я использую 32-разрядную версию Ubuntu 12.04 с установленным по умолчанию GCC 4.6.3.

Но make не работает из-за сбоя в утилите начальной загрузки. Чтобы обойти это, я пытаюсь установить старую версию GCC.

Я пропатчил /etc/apt/sources.list и установил gcc-3.3 и g ++ - 3.3 с помощью apt-get. Но скрипт настройки не работает, когда он вынужден использовать GCC 3.3:

$ export CC=gcc-3.3
$ export CXX=g++-3.3
$ ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc-3.3
checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.

И config.log показывает:

...
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: cannot find -lgcc_s
...

Версия ld - 2.22


person kjam    schedule 21.05.2012    source источник


Ответы (3)


У меня тоже была такая же проблема. Пакет libc6-dev предоставляет файл crt1.o, но он установлен в нестандартный каталог для gcc. Это сделано для поддержки 32-битных и 64-битных программ на одном хосте.

Чтобы решить эту проблему, я установил следующую переменную среды:

экспорт LIBRARY_PATH = / usr / lib / i386-linux-gnu

person michel    schedule 17.07.2012

apt-file search crt1.o показывает, какие пакеты содержат этот файл. Если он ничего не печатает, запустите apt-file update один раз.

person Aaron Digulla    schedule 21.05.2012

Как упоминал Мишель, вы можете сделать это, чтобы загрузить старый GCC:

export LIBRARY_PATH=/usr/lib/i386-linux-gnu

где бы файл crt1.o ни был в вашей системе - в моем случае он находится в /usr/lib32.

Затем, когда вы создали работающий GCC, вы можете создать символическую ссылку (или скопировать) crt1.o, crti.o и crtn.o в каталог ${prefix}/lib/gcc/... для недавно созданного компилятора, и вам не нужно будет устанавливать LIBRARY_PATH при его использовании. Найдите файл crtstart.o или что-то подобное, и это правильный каталог для размещения символических ссылок.

person Brooks Moses    schedule 20.07.2012