あるプログラムを別のプログラムの共有ライブラリとして使用したいと考えています。
私は次のように始めました: 私は以下を使用してコンパイルしたアプリケーションを持っています:
/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 から使用したすべての関数でエラーが発生します。この未定義の参照を持つ関数は、実際には最初のプログラムに含まれているライブラリであり、テストしたことを意味します。修正が必要な場所を教えてください。