ローカルマシンでプロジェクトのコピーをコンパイルしようとすると、互換性のないライブラリをスキップしているというエラーが表示されます。これは、職場のサーバーでホストされているライブバージョンをいじり回している場合には当てはまりません(完全に機能します)。
私はUbuntuの64ビットディストリビューションで開発しており、サーバーバージョンは32ビットで実行されていると想定しているため、他のさまざまなサイトから環境問題であると思われます。それにもかかわらず、環境変数を次のように設定した後:
CFLAGS+=" -m32"
CXXFLAGS+=" -m32"
まだ同じコンパイルエラーが表示されます:
/usr/bin/ld: skipping incompatible /dvlpmnt/libPI-Http.a when searching for -lPI-Http
ハズチュートリアルできますか?
== 編集==
これは、ジョナサンのアドバイスに従ったときに受け取った出力です。
http.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
どうやら、問題のライブラリは結局32ビットですか?
このメッセージは実際にはエラーではありません。問題のファイルが適切なアーキテクチャ(たとえば、32ビットと64ビット、間違ったCPUアーキテクチャ)ではないという警告にすぎません。リンカは正しいタイプのライブラリを探し続けます。
もちろん、can't find lPI-Http
の行に沿ってエラーが発生している場合は、問題があります:-)
ビルドシステムとメイクファイルの詳細を知らずに正確な救済策を提案することは困難ですが、暗闇の中でのショットを次に示します。
CFLAGS
ではなくCTAGS
にフラグを追加します。これは正しいですか? (あなたが持っているものは正しいかもしれません-これはビルドシステムに依存します!)LDFLAGS
の変更も必要になる場合があります。それでも解決しない場合-完全なエラー出力と、実行されていた実際のコマンド(例:gcc foo.c -m32 -Dxxx
など)を投稿できますか?
通常、それ自体はエラーではありません。コンパイラ/リンカーの-lPI-Http
引数に一致する最初のファイルが無効であることを警告しています。このエラーは、適切なコンテンツを持つ他のライブラリが見つからない場合に発生します。
したがって、/dvlpmnt/libPI-Http.a
が32ビットオブジェクトファイルまたは64ビットオブジェクトファイルのライブラリであるかどうかを確認する必要があります。-m32
オプションを使用してコンパイルする場合、64ビットになる可能性があります。 。次に、32ビットの代替libPI-Http.a
またはlibPI-Http.so
ファイルがあるかどうかを確認する必要があります。その場合、それを含むディレクトリがリンカの-L/some/where
引数にリストされていることを確認してください。そうでない場合は、どこかから32ビットバージョンのライブラリを取得またはビルドする必要があります。
そのライブラリにあるものを確立するには、以下を行う必要があります。
mkdir junk
cd junk
ar x /dvlpmnt/libPI-Http.a
file *.o
cd ..
rm -fr junk
'file
'ステップは、アーカイブ内のオブジェクトファイルのタイプを示します。残りは、簡単にクリーンアップできない混乱を作らないようにするだけです。