1

だから私はLinux上でXerces3.0.0を静的にリンクしようとしています。

私はすでに動的リンクでそれを行いました、そしてそれは働きます、しかし依存を避けるために私はそれを静的にしたいと思います。

適切な方法でそれを行うためにすべてのmakeファイルを変更しました

-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から発生しています...動的バージョンは正常に動作し、静的バージョンは失敗します。

何か案は???

ありがとう

4

2 に答える 2

1

xerces の動的バージョンには libpthread への依存関係があり、ローダーが正しいライブラリを確実に取得できるようにします。

リンカ コマンド ラインで libphtread を指定すると、これらの未解決の外部変数が修正されます。(a) 順序付けが重要なため、コマンド ラインの正しい場所に入力しましたか? (b) libpthread の静的バージョンと動的バージョンの両方を試しましたか?

于 2010-12-01T18:11:53.723 に答える
0

リンクされた lib の順序はリンカにとって重要です。pthread lib の順序を変更してみてください。

于 2010-12-01T18:11:46.937 に答える