0

我正在 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)

如何解决上述错误?

我提前感谢您的帮助。

4

0 回答 0