我正在尝试编译一个在 Red Hat Linux 上的 HP UX 服务器上运行的程序。
它使用 xerces-c 库来解析 xml 文件。编译没问题,但是当我尝试运行它时,我收到以下消息
./a.out: error while loading shared libraries: libxerces-c.so.28: cannot open shared object file: No such file or directory
我编写了一个非常简单的程序来尝试了解发生了什么:
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/TransService.hpp>
#include <xercesc/parsers/SAXParser.hpp>
#include <xercesc/util/OutOfMemoryException.hpp>
int main(int argc, char* argv[])
{
return 0;
}
编译如下:
g++ test.cpp -L./xml/xerces-c_2_8_0/lib -lxerces-c -I./xml/xerces-c_2_8_0/include
令人惊讶的是,该文件实际上在那里:
lib]$ ls
libxerces-c.a libxerces-c.so.28 libxerces-depdom.a libxerces-depdom.so.28
libxerces-c.so libxerces-c.so.28.0 libxerces-depdom.so libxerces-depdom.so.28.0
有什么想法吗?我觉得我错过了一些东西,但不知道是什么。
提前致谢。
最佳答案
运行ldd a.out
并查看链接器是否可以解析正确的.so文件
导出LD_LIBRARY_PATH
以包含当前文件夹(与PATH变量相同的方式)并再次检查ldd
关于c++ - xerces-c 2.8 : error while loading shared libraries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722386/