2

Cyclone プログラミング言語のソース コンパイラからビルドしようとしています。デフォルトでGCC 4.6.3がインストールされた32ビットUbuntu 12.04を実行しています。

しかし、ブートストラップ ユーティリティでのクラッシュにより、make は失敗します。これを回避するために、古い GCC バージョンをインストールしようとしています。

/etc/apt/sources.list にパッチを適用し、apt-get を使用して gcc-3.3 と g++-3.3 をインストールしました。ただし、GCC 3.3 の使用を強制されると、configure スクリプトは失敗します。

$ 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 です

4

3 に答える 3

2

私もこれと同じ問題を抱えていました。libc6-dev パッケージは crt1.o ファイルを提供しますが、gcc の非標準ディレクトリーにインストールされます。これは、同じホスト上で 32 ビットと 64 ビットのプログラムをサポートするためです。

この問題を解決するために、次の環境変数をセットアップしました。

エクスポート LIBRARY_PATH=/usr/lib/i386-linux-gnu

于 2012-07-17T18:55:21.327 に答える
1

apt-file search crt1.oこのファイルを含むパッケージを表示します。何も出力されない場合は、apt-file update一度実行してください。

于 2012-05-21T08:51:46.223 に答える
0

michel が述べたように、これを実行して古い 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。それがシンボリックリンクを配置する正しいディレクトリです。

于 2012-07-20T04:39:53.993 に答える