0

あるプログラムを別のプログラムの共有ライブラリとして使用したいと考えています。

私は次のように始めました: 私は以下を使用してコンパイルしたアプリケーションを持っています:

/usr/bin/g++ -I/usr/include/libxml2  -Xlinker -zmuldefs -fPIC -c a.cpp
/usr/bin/g++ -I/usr/include/libxml2  -Xlinker -zmuldefs -fPIC -c b.cpp
/usr/bin/g++ -I/usr/include/libxml2  -Xlinker -zmuldefs -fPIC -c c.cpp

次に、次のコマンドを使用して、このファイルから取得したオブジェクトから共有オブジェクト ライブラリを作成しました。

g++ -fPIC -Xlinker -zmuldefs -shared -o libabc.so a.o b.o c.o

この後、libabc.so ファイルを取得し、これを

sudo cp libabc.so /usr/local/lib/libabc.so

このコマンドを使用して、この新しく作成されたライブラリlibabc.soを使用する元のアプリケーションをコンパイルすると、次のようになります。

/usr/local/lib/libabd.so: undefined reference to `xmlXPathNewContext'

最初のアプリケーションで含まれているライブラリ libxml2 から使用したすべての関数でエラーが発生します。この未定義の参照を持つ関数は、実際には最初のプログラムに含まれているライブラリであり、テストしたことを意味します。修正が必要な場所を教えてください。

4

2 に答える 2

0

-lxml2アプリケーションをライブラリにリンクするために使用したコマンドラインは表示されませんが、リンカーに渡されるフラグに追加することで問題が解決すると思います。

于 2012-06-12T17:11:37.910 に答える
0

を使用してパスを渡す-I/path/to/libraryか、またはにエクスポートする必要がある場合がありLD_LIBRARY_PATHます。

于 2012-06-12T18:22:24.590 に答える