저는 Ubuntu 14.04.2 32비트 플랫폼을 사용하고 있으며 gcc 4.8.4가 설치되어 있습니다. 이전 버전의 Linux 커널을 컴파일하기 위해 이전 버전의 gcc(2.95.3)를 빌드하고 싶습니다. 나는 이것을 따라하려고 노력한다.gcc-2.95.3이gcc-2.95.3-64(64비트 호스트에서 32비트 gcc를 빌드하는 방법에 대한 후자의 가이드가 도움이 되는 것 같았지만 작동하지 않았습니다.) 가이드를 빌드했지만 실패했습니다. 현재 배포판에서 컴파일할 수 있는 방법이 있나요?
편집: 이것은 내가 사용하지 않는 경우에 사용하는 오류 메시지입니다 ./configure --prefix=/usr/local/gcc --sysconfdir=/etc
.make bootstrap
부트로더플래그 다음 오류가 발생하기 전에 더 많은 오류가 발생했습니다. 다음 오류 메시지는 다음에서 발생합니다.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
답변1
현대 시스템에서 그러한 오래된 버전의 gcc를 구축하는 데 어려움을 겪을 것입니다... 복사한 오류는 에서 발생하며 texinfo
더 이상 gcc 2.95에 포함된 문서와 호환되지 않습니다.
바이너리를 직접 설치해 볼 수 있습니다http://snapshot.debian.org/package/gcc-2.95/2.95.4.ds15-27/;기존 gcc 설치를 건드리지 않고 거기에서 C 지원을 설치 cpp-2.95
하고 gcc-2.95
제공합니다. C++ 지원을 받으려면 g++-2.95
및 라이브러리가 필요합니다. 최신 시스템에 얼마나 잘 설치되는지 확인하지 않았습니다.
답변2
방금 다음 단계를 사용하여 Ubuntu 14.04에 gcc-3.4.6 및 gcc-2.95.3을 설치했습니다.지도 시간. 해당 페이지에서 일부 패치 파일도 다운로드해야 하기 때문에 이 단계를 여기에 게시하는 것은 별로 의미가 없습니다.
두 컴파일 모두 gcc 빌드 디렉터리와 다른 Makefile이 포함된 하위 폴더의 모든 Makefile을 -D_FORTIFY_SOURCE=0
추가 해야 했습니다 .CFLAGS
먼저 gcc-3.4.6을 설치한 다음 이를 사용하여 gcc-2.95.3을 빌드해야 합니다. 이렇게 하려면 CC=/opt/x86_64/gcc/gcc-3.4.6/bin/gcc
gcc-2.95.3의 Makefile에 설정해야 합니다.
또한 소스 디렉터리에서 튜토리얼 페이지의 명령으로 생성된 디렉터리 glibc-2.10.1
로 다음 파일을 복사해야 했습니다 .gcc-2.95.3/glibc-workaround/
bits/libc-lock.h
sys/param.h
_G_config.h
위 문제의 오류 메시지를 수정하려면:나는 내가 컴파일하거나 설치한 gcc-2.95.3 Makefile의 모든 부분을 주석 처리했습니다 texinfo
.cpp.info
답변3
소스에서 이전 버전의 gcc를 컴파일하고 prefix 옵션을 사용하여 다른 대상 디렉터리를 지정해야 합니다.
./configure --prefix=/usr/local/gcc
내 생각에 gcc 구성을 사용하면 기존 /etc를 사용할 수 있을 것 같습니다.
./configure --prefix=/usr/local/gcc --sysconfdir=/etc