質問

そのため、LinuxでXerces 3.0.0を静的にリンクしようとしています。

私はすでに動的リンクでそれをしました、そしてそれは機能しますが、依存を避けるために私はそれを静的にやりたいです。

私はすべてのメイクファイルを適切な方法で行うように変更しました

-Wl,-Bstatic ... -lxerces-c -Wl,-Bdynamic ...

しかし、私は次のエラーを取得しています:

  undefined reference to '__ctype_b'
  undefined reference to '__ctype_tolower'
  undefined reference to '__ctype_toupper'

ブルートフォースの方法が見つかったものを修正しました ここ

しかし、Xercesに関連する別のタイプのエラーがありました。

Xerces/3.0.0/lib/libxerces-c.a(PosixMutexMgr.o): 
In function `xercesc_3_0::PosixMutexMgr::create(xercesc_3_0::MemoryManager*)':

PosixMutexMgr.cpp:(.text+0x84): undefined reference to `pthread_mutexattr_init'
PosixMutexMgr.cpp:(.text+0x95): undefined reference to `pthread_mutexattr_settype'
PosixMutexMgr.cpp:(.text+0xad): undefined reference to `pthread_mutexattr_destroy'
PosixMutexMgr.cpp:(.text+0xd0): undefined reference to `pthread_mutexattr_destroy'

pthreadが欠落しているように思われるので、追加してみましたが、問題は解決しません...これらのエラーはXercesから来ています...そして動的バージョンは正常に動作します。

何か案は???

ありがとう

役に立ちましたか?

解決

Xercesの動的バージョンには、ローダーが正しいライブラリをピックアップすることを保証するLibpThreadに依存関係があります。

リンカーコマンドラインでlibphtreadを指定することは、未解決の外部を修正する必要があります。(a)順序付けの問題としてコマンドラインの適切な場所に入れましたか?

他のヒント

LIBの順序は、リンカーの問題をリンクします。PthreadLibの順序を変更してみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top