ESXi3.5コンソールウィンドウ内で実行するために単純なc++プログラムをコンパイルしようとしています。間違ったライブラリとリンクしているようです...どこかに記述されているセットアップがありますか?そうするために、どのバージョンのG ++とライブラリを使用する必要がありますか?
質問する
1800 次
1 に答える
1
これが私が問題を解決した方法です。私はコンパイルするために以下を行いました:
- ubuntuでgccを使用してコンパイル
- 実行可能ファイルでlddを実行しました
サブフォルダESXi-3.5-libへの依存関係として表示されたすべてのライブラリをコピーしました。私の場合、彼らは:
ld-linux.so.2 libc.so.6 libgcc_s.so.1 libm.so.6 libstdc++.so.5
gccに次のスイッチを追加しました。
- -nodefaultlibs(デフォルトのライブラリとのリンクを試みないため)
- -lc(一部のcrtライブラリでのリンクエラーの防止)
- -fno-stack-protector(別のエラーを防止し、他の関数が欠落していました)
以下は私の最後のビルドコマンドでした:
g++ file1.cpp file2.cpp file3.cpp -o output-biinary-file-name \
ESXi-3.5-lib/ld-linux.so.2 ESXi-3.5-lib/libc.so.6 ESXi-3.5-lib/libgcc_s.so.1\
ESXi-3.5-lib/libm.so.6 ESXi-3.5-lib/libstdc++.so.5 \
-nodefaultlibs -lc -m32 -fno-stack-protector
于 2010-01-24T08:34:23.973 に答える