1

私は autotools の初心者です。xerces-c 3.1 を使用して、xml ファイルを解析する必要があるアプリケーションを実行しています。

apt-get ユーティリティを使用して xerces-c ライブラリをインストールすると、私のコードは正常に動作します (その後、xerces-c ライブラリとインクルード ファイルがそれぞれ /usr/lib と /usr/include/xercesc にインストールされます)。configure.ac ファイルには、次のマクロがあります。

AC_CHECK_LIB([xerces-c],[main],[],[AC_MSG_ERROR([*** xerces-c lib not found])])  

OK、私が言ったように、これは期待どおりに機能します。ただし、プロジェクトディレクトリ内にライブラリを配置したい (配布パッケージに含める) と、ここから問題が始まります。

xerces-c ライブラリをアンインストールし、xerces-c ライブラリ (xerces-c Web ページからダウンロード) をプロジェクト ディレクトリにコピーします。次に、configure.ac にマクロを追加します。

    LDFLAGS="$LDFLAGS -L/home/xxxx/workspace/P3/src/lib"  

最後に、プロジェクトのルート ディレクトリで次のコマンドを実行するだけで、makefile を生成してコンパイルします。

  • autoconf
  • automake
  • 。/構成、設定
  • 作る

コンパイルは良さそうで、リンクも問題ないようです:

g++  -g -O2  -L/home/xxxx/workspace/P3/src/lib -o app app-P3.o  -lxerces-c  

しかし、アプリケーションを実行すると、次のようなエラーが発生しました。

./src/app: error while loading shared libraries: libxerces-c-3.1.so: cannot open shared object file: No such file or directory  

私が間違っていることは何ですか?
前もって感謝します。

4

1 に答える 1

0

共有ライブラリを使用しているため、libxerces-c-3.1.soで見つけられる場所にある必要がありますld。パッケージをインストールした前のケースではxerces-c、libxerces は、/usr/libまたはそれが見つかる場所にインストールされていました。おそらく、次の方法で今のところ動作させることができます。

LD_LIBRARY_PATH=$PATH:/home/xxxx/workspace/P3/src/lib ./src/app

しかし、これは最終的にパッケージをインストールするために把握しなければならないものです。

于 2013-06-12T18:40:44.717 に答える