包含和使用带有autotools的库

时间:2013-06-12 15:56:09

标签: c++ autotools

我是一个autotools新手;我正在使用xerces-c 3.1做一个需要解析xml文件的应用程序。

当我使用apt-get实用程序安装xerces-c库时,我的代码工作正常(然后xerces-c库和include文件分别安装在/ usr / lib和/ usr / include / xercesc中)。在我的configure.ac文件中,我有以下宏:

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

好吧,正如我所说,这可以按预期工作。但是,我想让项目目录中的库(包含在分发包中),这里我的问题就开始了。

我卸载了xerces-c库,并将xerces-c库(从xerces-c网页下载)复制到我的项目目录中。然后,我将我的confgure.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  

我做错了什么? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

由于您使用共享库libxerces-c-3.1.so需要位于ld可以找到的位置。在前一个安装了xerces-c软件包的情况下,libxerces安装在/usr/lib或可以找到它的地方。您现在可以通过以下方式使其正常工作:

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

但是这是你最终要为你的软件包安装找到的东西。