como posso construir uma versão antiga do gcc?

1

Estou na plataforma Ubuntu 14.04.2 de 32 bits e tenho o gcc 4.8.4 instalado. Eu quero construir a versão antiga do gcc (2.95.3) para compilar uma versão mais antiga do kernel do Linux. Tentei seguir este gcc-2.95.3 e este gcc-2.95.3-64 (embora o último instrua como construir 32 bits do gcc no host de 64 bits, parece útil mas não funcionou) guias, mas eu não consegui construí-lo. Existe uma maneira de compilá-lo na minha distribuição atual?

EDIT: Aqui está a mensagem de erro que recebo usando ./configure --prefix=/usr/local/gcc --sysconfdir=/etc e make bootstrap Se eu não usar o bootstrap flag, recebo mais erros antes de chegar abaixo dos erros. Abaixo, mensagens de erro são de gcc-2.95.1

Making info file 'cpp.info' from './cpp.texi'.
./cpp.texi:2041: Unknown command 'sam'.
./cpp.texi:2041: Misplaced {.
./cpp.texi:2041: Misplaced }.
./cpp.texi:2041: Unmatched }.
./cpp.texi:361: Node 'Include Operation''s Next field not pointed back to.
./cpp.texi:421: This node ('Once-Only') is the one with the bad 'Prev'.
./cpp.texi:815: Next reference to nonexistent node 'Nonstandard Predefined'.
./cpp.texi:802: 'Standar Predefiined' has an Up field of 'Predefined', but 'Predefined' has no menu item for 'Standar Predefiined'.
./cpp.texi:998: Prev reference to nonexistent node 'Standard Predefined'.
./cpp.texi:802: 'Nonstanard Preddefined' has an Up field of 'Predefined', but 'Predefined' has no menu item for 'Nonstanard Preddefined'.
./cpp.texi:1366: Next reference to nonexistent node 'Macro Parentheses'.
./cpp.texi:1398: Node 'Macro Prenthesees''s Next field not pointed back to.
./cpp.texi:1475: This node ('SwallowSemicoloon') is the one with the bad 'Prev'.
./cpp.texi:1398: Node 'Macro Prenthesees's Prev field not pointed back to.
./cpp.texi:1366: This node ('Misnesting') has the bad Next.
./cpp.texi:1342: 'Macro Prenthesees' has an Up field of 'Macro Pitfalls', but 'Macro Pitfalls' has no menu item for 'Macro Prenthesees'.
./cpp.texi:1475: Node 'SwallowSemicoloon''s Next field not pointed back to.
./cpp.texi:1538: This node ('Side Effects') is the one with the bad 'Prev'.
./cpp.texi:1342: 'SwallowSemicoloon' has an Up field of 'Macro Pitfalls', but 'Macro Pitfalls' has no menu item for 'SwallowSemicoloon'.
./cpp.texi:1342: 'Argumen Prescann' has an Up field of 'Macro Pitfalls', but 'Macro Pitfalls' has no menu item for 'Argumen Prescann'.
./cpp.texi:1812: Next reference to nonexistent node 'Newline in Argss'.
./cpp.texi:1850: Node 'Newlines in Args's Prev field not pointed back to.
./cpp.texi:1812: This node ('Cascaded Macros') has the bad Next.
./cpp.texi:1911: Node 'Conditinal Usess' missing Up field.
./cpp.texi:1944: Next reference to nonexistent node 'Deleted ode'.
./cpp.texi:1944: Prev reference to nonexistent node 'Conditioal Usess'.
./cpp.texi:1959: Next reference to nonexistent node '#else Diective.'.
./cpp.texi:2018: Node '#else Directive' missing Up field.
./cpp.texi:2039: Node '#elif Directive' missing Up field.
./cpp.texi:2086: Node 'Deleted Code' missing Up field.
./cpp.texi:2107: Node 'Conditionals-Macros' missing Up field.
./cpp.texi:2208: Next reference to nonexistent node '#error Directive'.
./cpp.texi:2208: Prev reference to nonexistent node 'Conditioals-Maccros'.
./cpp.texi:2338: Node '#error irectivee' missing Up field.
./cpp.texi:71: 'Other Drectivess' has an Up field of 'Top', but 'Top' has no menu item for 'Other Drectivess'.
./cpp.texi:2435: Cross reference to nonexistent node 'Standard Predefined'.
./cpp.texi:2360: Cross reference to nonexistent node 'Nonstandard Predefined'.
./cpp.texi:1956: Menu reference to nonexistent node '#elif Diective.'.
./cpp.texi:1955: Menu reference to nonexistent node '#else Diective.'.
./cpp.texi:1908: Menu reference to nonexistent node '#error Directive'.
./cpp.texi:1906: Menu reference to nonexistent node 'Conditioals-Maccros'.
./cpp.texi:1905: Menu reference to nonexistent node 'Deleted ode'.
./cpp.texi:1903: Menu reference to nonexistent node 'Conditioal Usess'.
./cpp.texi:1360: Menu reference to nonexistent node 'Argument Prescan'.
./cpp.texi:1355: Menu reference to nonexistent node 'Swallow Semicolon'.
./cpp.texi:1353: Menu reference to nonexistent node 'Macro Parentheses'.
./cpp.texi:1148: Cross reference to nonexistent node 'Swallow Semicolon'.
./cpp.texi:812: Menu reference to nonexistent node 'Nonstandard Predefined'.
./cpp.texi:811: Menu reference to nonexistent node 'Standard Predefined'.
./cpp.texi:128: Menu reference to nonexistent node 'Other Directives'.
./cpp.texi:815: warning: unreferenced node 'Standar Predefiined'.
./cpp.texi:998: warning: unreferenced node 'Nonstanard Preddefined'.
./cpp.texi:1398: warning: unreferenced node 'Macro Prenthesees'.
./cpp.texi:1911: warning: unreferenced node 'Conditinal Usess'.
./cpp.texi:2018: warning: unreferenced node '#else Directive'.
./cpp.texi:2039: warning: unreferenced node '#elif Directive'.
./cpp.texi:2086: warning: unreferenced node 'Deleted Code'.
./cpp.texi:2338: warning: unreferenced node '#error irectivee'.
makeinfo: Removing output file 'cpp.info' due to errors; use --force to preserve.
make[2]: *** [cpp.info] Error 2
    
por kenn 21.05.2015 / 19:02

3 respostas

3

Você terá dificuldade em criar uma versão antiga do gcc em um sistema moderno ... Os erros que você copiou são do texinfo , que não é mais compatível com a documentação incluída no gcc 2.95. / p>

Você pode tentar instalar binários diretamente do link ; A instalação de cpp-2.95 e gcc-2.95 de lá fornecerá suporte a C sem tocar na instalação existente do gcc. Para obter suporte para C ++, você precisaria de g++-2.95 e das bibliotecas; Eu não verifiquei como eles seriam instalados em um sistema moderno.

    
por 21.05.2015 / 23:32
1

Acabei de instalar o gcc-3.4.6 e o gcc-2.95.3 no Ubuntu 14.04 usando os passos dos seguintes tutorial . Não faz muito sentido para mim postar as etapas aqui, porque você também precisa baixar alguns arquivos de patch dessa página.

Para ambas as compilações eu tive que adicionar -D_FORTIFY_SOURCE=0 ao CFLAGS em todo o Makefile do diretório de compilação do gcc e suas subpastas que contêm outros Makefiles.

Eu precisava primeiro instalar o gcc-3.4.6 e depois usá-lo para construir o gcc-2.95.3. Para fazer isso, você precisa definir CC=/opt/x86_64/gcc/gcc-3.4.6/bin/gcc nos Makefiles do gcc-2.95.3.

Além disso, também tive que copiar os seguintes arquivos do diretório de origem de glibc-2.10.1 para o diretório gcc-2.95.3/glibc-workaround/ criado pelos comandos na página do tutorial:

  • bits/libc-lock.h
  • sys/param.h
  • _G_config.h

Para corrigir a mensagem de erro da pergunta acima: Comentei todas as seções dos Makefiles do gcc-2.95.3 que compilaram ou instalaram texinfo ou cpp.info .

    
por 28.06.2015 / 18:46
0

Você precisará compilar a versão mais antiga do gcc a partir do código-fonte e fornecer um diretório de destino diferente com a opção de prefixo.

./configure --prefix=/usr/local/gcc

Acho que o configure do gcc permitirá que você use o seu / etc existente.

./configure --prefix=/usr/local/gcc --sysconfdir=/etc
    
por 21.05.2015 / 20:27