我正在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)
如何解决上述错误?
我事先感谢你的帮助。