C++ 包括并使用带有自动工具的库

C++ 包括并使用带有自动工具的库,c++,autotools,C++,Autotools,我是一个自动工具新手;我正在使用xerces-C3.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-C3.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并编译,只需在项目根目录中执行以下命令:

  • 自动通信
  • 汽车制造商
  • /配置
  • 制造
编译看起来不错,链接也不错:

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  
我做错了什么?

提前感谢。

因为您使用的是共享库
libxerces-c-3.1。所以
需要在
ld
可以找到它的地方。在前面安装了
xerces-c
包的情况下,libxerces安装在
/usr/lib
或可以找到它的地方。您可以通过以下方式使其暂时工作:

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

但是,这是您在安装软件包时最终必须解决的问题。

“我希望将库放在项目目录中,我的问题就从这里开始。”事实上,这是许多问题的开始。解决办法是不要这样做!不要将自动工具视为软件包管理系统,因为这不是其功能。