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)
上記のエラーを解決するにはどうすればよいですか?
よろしくお願いします。