69

さて、ubuntu 12.0464ビットから32ビットに切り替えてインストールしましたbuild-essential.

次に、GMP-5.0.5、MPFR-3.1.1、MPC-1.0、ISL-0.10、CLOOG-0.17.0をコンパイルしてインストールしました。メインのgccトランクのコピーをチェックアウトし、次の構成行を使用して(別のディレクトリから)ビルドしようとしました。

../svnsrc/configure --prefix=/usr/GCC/svn --enable-__cxa_atexit --with-plugin-ld=/usr/bin/ld.gold --enable-threads=posix --enable-werror --enable-build-with-cxx --with-gmp=/usr/GCC/prereq/svn --with-mpfr=/usr/GCC/prereq/svn --with-mpc=/usr/GCC/prereq/svn --with-isl=/usr/GCC/prereq/svn --with-cloog=/usr/GCC/prereq/svn --enable-languages=c,c++

構成は正常に実行されたので、実行しましmake && make checkた。これはしばらくは正常に実行されましたが、次のエラーで失敗しました。

/home/matt/GCC/svnbuild/./gcc/xgcc -B/home/matt/GCC/svnbuild/./gcc/ -B/usr/GCC/svn/i686-pc-linux-gnu/bin/ -B/usr/GCC/svn/i686-pc-linux-gnu/lib/ -isystem /usr/GCC/svn/i686-pc-linux-gnu/include -isystem /usr/GCC/svn/i686-pc-linux-gnu/sys-include    -g -O2 -O2  -g -O2 -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fpic -mlong-double-80 -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -fpic -mlong-double-80 -I. -I. -I../.././gcc -I../../../svnsrc/libgcc -I../../../svnsrc/libgcc/. -I../../../svnsrc/libgcc/../gcc -I../../../svnsrc/libgcc/../include -I../../../svnsrc/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS  -DUSE_TLS -o _muldi3.o -MT _muldi3.o -MD -MP -MF _muldi3.dep -DL_muldi3 -c ../../../svnsrc/libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
In file included from /usr/include/stdio.h:28:0,
                 from ../../../svnsrc/libgcc/../gcc/tsystem.h:88,
                 from ../../../svnsrc/libgcc/libgcc2.c:29:
/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
 #include <bits/predefs.h>
                          ^
compilation terminated.
make[3]: *** [_muldi3.o] Error 1
make[3]: Leaving directory `/home/matt/GCC/svnbuild/i686-pc-linux-gnu/libgcc

gcc-multilib周りを見回しましたが、UbuntuとDebianはライブラリを分離してmutiarchシステムを使用しているため、このエラーはx86_64でインストールされなかったために発生したことがわかりました。わかりました...しかし、私はi686を使用していますが、なぜ64ビットライブラリが必要なのですか?どんな助けでもいただければ幸いです。ありがとう。

4

2 に答える 2

123

してみてください

sudo apt-get install gcc-multilib

コンピューターは常に 64 ビット マシンであるため、32 ビット システムをインストールしてもコンピューターのアーキテクチャが変わるとは思いません。Ubuntu の 64 ビット バージョンをインストールすると、マルチコア パフォーマンスが向上するだけです。お使いのコンピューターはまだ 64 ビット コンピューターなので、おそらく 64 ビット マシンでコンパイルできる C コンパイラーが必要です。したがって、gcc-multilib. おもう。

于 2012-09-27T06:05:18.517 に答える
4

gcc-multilib のトリックはうまくいきませんでした。代わりに、ビルド環境でこれを設定すると、うまくいきました。

C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
于 2013-08-12T15:07:22.220 に答える