6

私は Linux プラットフォームで最初の一歩を踏み出しています。Centos x64 をインストールしました。いくつかの関数といくつかの単体テストを含む小さなプログラムを作成しようとしています。

開発環境として Netbeans 7.1.2 を使用しています。

ビルド プロセスの出力は次のとおりです。

CLEAN SUCCESSFUL (total time: 671ms)

"/usr/bin/gmake" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
gmake[1]: Entering directory `/home/john/Dev/GoatsCheese'
"/usr/bin/gmake"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/goatscheese
gmake[2]: Entering directory `/home/john/Dev/GoatsCheese'
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
g++ -m32   -c -g -I/usr/include/cppunit -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++ -m32    -o dist/Debug/GNU-Linux-x86/goatscheese build/Debug/GNU-Linux-x86/main.o  
/usr/bin/ld: crt1.o: No such file: No such file or directory
collect2: ld returned 1 exit status

コンパイラは 32 ビットの実行可能ファイルを作成するように設定されていますが、それが問題になるとは思いません (32 ビットの実行可能ファイルは、Windows の x64 プラットフォーム (私がよく知っているプラ​​ットフォーム) で作成できます)。

Locate は、次の場所で crt1.o ファイルを見つけます。

locate crt1.o
/usr/lib64/Mcrt1.o
/usr/lib64/Scrt1.o
/usr/lib64/crt1.o
/usr/lib64/gcrt1.o

パッケージが不足しているのか、それともシンボリックリンクを作成する必要があるのか​​ わかりません。

4

3 に答える 3

12

32 ビット標準 C ライブラリ開発パッケージをインストールする必要があります。のような名前になっていると思われますlibc6-dev-i386

于 2012-05-28T10:57:59.980 に答える
2

ld は 32 ビットの crt1.o を探していたと思いますが、64 ビット版しかありません。

于 2012-11-29T13:17:06.107 に答える
0

crt1.o が見つからない問題は、おそらくライブラリ指定子オプションの 1 つが欠落しているためです。私は Netbeans に詳しくありませんが、/usr/lib64 を追加する必要があります。g++ コマンド ラインのどこかで、「-L /usr/lib64」のようになります。

注: Windows でそのように動作するため、同じ CPU を搭載した他のプラットフォームでも同じように動作すると仮定するのは、考え方の誤りです。これは正しく聞こえません。

32 ビット ライブラリを使用して 32 ビット バイナリをビルドし、64 ビット ライブラリにリンクされた 64 ビット バイナリをビルドすることをお勧めします。

于 2012-05-28T11:04:41.613 に答える