Xerces-C 2.8:エラー共有ライブラリのロード中
質問
私は、Red Hat Linux上のHP-UXサーバ上で実行中のプログラムをコンパイルしようとしています。
これは、XMLファイルを解析するためのXerces-Cライブラリを使用しています。コンパイルはOKですが、私はそれを実行しようとすると、私は次のメッセージが表示されます。
./ a.outの:エラー共有読み込み中 図書館:libxerces-c.so.28:できません そのようなファイル:共有オブジェクトファイルを開きます またはディレクトリ
は、私が試してみて起こっていただきまし理解することは非常に簡単なプログラムを書いてます:
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/TransService.hpp>
#include <xercesc/parsers/SAXParser.hpp>
#include <xercesc/util/OutOfMemoryException.hpp>
int main(int argc, char* argv[])
{
return 0;
}
そして、このようにそれをコンパイルします:
G ++ます。test.cpp -L./xml/xerces-c_2_8_0/lib -lxerces-C -I./xml/xerces-c_2_8_0/include
驚くべきことに、ファイルが実際にあります:
lib]$ ls
libxerces-c.a libxerces-c.so.28 libxerces-depdom.a libxerces-depdom.so.28
libxerces-c.so libxerces-c.so.28.0 libxerces-depdom.so libxerces-depdom.so.28.0
任意の考え?私は私が何かが欠けてる感じが、何を知らない。
事前に感謝します。
解決
ldd a.out
を実行すると、リンカは、
エクスポートLD_LIBRARY_PATH
他のヒント
あなたが欲しいものを行うには良い方法は、次のいずれかです。
g++ test.cpp -Xlinker -R ./xml/xerces-c_2_8_0/lib -lxerces-c -I./xml/xerces-c_2_8_0/include
または
g++ test.cpp -Wl,-rpath ./xml/xerces-c_2_8_0/lib -lxerces-c -I./xml/xerces-c_2_8_0/include
XlinkerまたはW1をオプションを使用すると、特定のリンクオプションを使用することができ、あなたはmodifiyする必要はありません。 LD_LIBRARY_PATH
あなたはどこのコードで静的にコンパイルされ、/ libにusualyと/ usr / libの場所にアレントアレント様々なシンボルを見つけるためにランタイムCライブラリを伝える必要があります。
あなたはLD_LIBRARY_PATHに共有ライブラリへのパスを追加することによってこれを行います。この場合、これはあなたがコンパイラに-L引数に入れてきた何になります。