0

我想将一个程序用作另一个程序的共享库。

我开始如下:我有一个我使用编译的应用程序:

/usr/bin/g++ -I/usr/include/libxml2  -Xlinker -zmuldefs -fPIC -c a.cpp
/usr/bin/g++ -I/usr/include/libxml2  -Xlinker -zmuldefs -fPIC -c b.cpp
/usr/bin/g++ -I/usr/include/libxml2  -Xlinker -zmuldefs -fPIC -c c.cpp

然后,我使用以下命令从该文件中获取的对象创建了一个共享对象库:

g++ -fPIC -Xlinker -zmuldefs -shared -o libabc.so a.o b.o c.o

在此之后,我得到了我复制到的 libabc.so 文件

sudo cp libabc.so /usr/local/lib/libabc.so

现在,当我使用以下命令编译将使用这个新创建的库libabc.so的原始应用程序时:

/usr/local/lib/libabd.so: undefined reference to `xmlXPathNewContext'

我从第一个应用程序中包含的库 libxml2 中使用的所有函数都出现错误,并且具有此未定义引用的函数实际上是我包含在第一个程序中的库,我的意思是我已经测试过它。所以请任何人在我需要更正的地方指导我。

4

2 回答 2

0

我没有看到用于将应用程序链接到库的命令行,但我认为添加-lxml2到传递给链接器的标志应该可以解决问题。

于 2012-06-12T17:11:37.910 回答
0

您可能还必须使用 传递路径-I/path/to/library,或者将其导出到LD_LIBRARY_PATH.

于 2012-06-12T18:22:24.590 回答