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