更改libmysqlclient和libxml2的链接顺序会导致libxml2出错

时间:2012-07-03 13:13:01

标签: c++ mysql c linux libxml2

我正在Linux平台上用C构建应用程序。在我的程序中,我使用API​​ xmlReadFile()使用libxml2读取XML文档。

我将程序链接如下(来自makefile的行):

 $(CC) -m32 -g -o app.out -Wl,-Bstatic $(other_libs) -lmysqlclient -lxml2 -Wl,-Bdynamic -lpthread -lm -lrt -lz -lbz2 $(extra_ldflags)

使用这些设置,一切都有效。对xmlReadFile()的API调用工作正常。

如果我在-lxml2之后移动-lmysqlclient,程序会在xmlReadFile()中生成以下错误。

File.xml:1: parser error : Document is empty

^
File.xml:1: parser error : Start tag expected, '<' not found

^

我实际上想要动态链接到mysql客户端(因为我有libmysqlclient_r.so而不是libmysqlclient_r.a而我想使用libmysqlclient_r.so,因为我的应用程序是多线程的)。即使我保持链接顺序相同并指定mysql客户端库的动态链接,如下所示,我得到上述错误。

 $(CC) -m32 -g -o app.out -Wl,-Bstatic $(other_libs) -Wl,-Bdynamic -lmysqlclient -Wl,-Bstatic -lxml2 -Wl,-Bdynamic -lpthread -lm -lrt -lz -lbz2 $(extra_ldflags)

如何解决上述错误?

我事先感谢你的帮助。

0 个答案:

没有答案