Сборка gcc-2.95.3 для использования на 64-битной Ubuntu 9.10 - PullRequest
0 голосов
/ 26 января 2011

ОБНОВЛЕНИЕ: Я получил копию Debian 3.0r2 от http://ftp.ntct.edu.tw/Linux/ISO/Debian/3.0r2/ Он содержит gcc 2.95.4, который идеально подходит.Установил его в VirtualBox и теперь все в порядке с миром.:)

ОРИГИНАЛ:

Я пытаюсь создать копию gcc 2.95.3 для использования на моей машине, и у меня действительно трудное время.

Я купил книгу, которую я изучал, и это в 2002 году. Она хочет, чтобы я скомпилировал множество примеров, чтобы увидеть, какую сборку придет компилятору C.Книга использует gcc 2.95.3.Gcc в моей системе - 4.x, не говоря уже о 64-битной, так что сборка генерирует выглядит почти НИЧЕГО, как в примерах из книги.

Я пытался почти все, чтобы сделать gcc 2.95.3 работа на моей машине.Я даже установил более старые 32-битные Linux-дистрибутивы, используя VirtualBox, но не могу, пока я его не заставлю скомпилировать.

В настоящее время на моей машине я делаю вот что:

И после того, как он катится в течение нескольких минут, он приходит к следующему:

make[2]: Entering directory `/home/twilson/Downloads/gcc-2.95.3/gcc/ch'
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include parse.c
parse.c: In function ‘require’:
parse.c:326: warning: format not a string literal and no format arguments
parse.c: In function ‘expect’:
parse.c:352: warning: format not a string literal and no format arguments
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include actions.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include except.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include grant.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include lang.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include tree.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include lex.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include decl.c
decl.c: In function ‘start_struct’:
decl.c:4451: error: argument ‘code’ doesn’t match prototype
ch-tree.h:736: error: prototype declaration
make[2]: *** [decl.o] Error 1
make[2]: Leaving directory `/home/twilson/Downloads/gcc-2.95.3/gcc/ch'
make[1]: *** [cc1chill] Error 2
make[1]: Leaving directory `/home/twilson/Downloads/gcc-2.95.3/gcc'
make: *** [all-gcc] Error 2

Кажется, что независимо от того, что я делаю, он всегда выдает ошибку с той или иной ошибкой.Это так близко, как я (я полагаю, так как это самая длинная компиляция, когда-либо работавшая без остановки).

Я не специалист по конфигурированию, компоновке или старому программному обеспечению.Я много лет занимался веб-тематикой, и я опаздываю в эту игру более низкого уровня.

Кто-нибудь пытался сделать это недавно и преуспел, или знаете, почему это происходит?

Спасибо, Том

Ответы [ 2 ]

1 голос
/ 27 января 2011

С правильными флагами gcc будет генерировать ассемблер для 32-битной системы. В зависимости от сложности кода и вашего уровня чтения ассемблера, разница между выходными данными 2.95 и 4.x может не сильно отличаться. Возможно, стоит подумать, избавит ли вас от необходимости исправления старой версии компилятора.

Например, следующий код создаст ассемблерный код (в файле .s) для процессоров i386:

gcc yourfile.c -S -arch i386 

Если это вам не подходит, взгляните на эту страницу, в которой изложены шаги, необходимые для сборки gcc 2.95 на 64-битном хосте. http://www.trevorpounds.com/blog/?p=111

0 голосов
/ 26 января 2011

Что ж, создание такой старой версии будет адом, не говоря уже о том, что это очень тяжело. Я вижу несколько вариантов:

  1. Используйте старый GCC, чтобы попытаться построить еще более старый GCC. (Что-то вроде 3.4.5 будет больше удачи в работе.

  2. Используйте пакет Ubuntu для более старой версии Ubuntu, скажем, Dapper GCC 2.95 . Если он не устанавливается, просто распакуйте его куда-нибудь (это должно быть довольно просто, просто убедитесь, что все зависимости установлены одинаково. Если это не работает, попробуйте ВМ со старой установкой Linux). *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...