我是一个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并编译,只需在项目根目录中执行以下命令:
编译看起来不错,链接也很好看:
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
我做错了什么? 提前谢谢。
答案 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
但是这是你最终要为你的软件包安装找到的东西。