0

libAPRソースをコンパイルし、Apacheが提供するすべてのテストを正常に実行しました。

ただし、プログラムをlibapr.soにリンクすると、同じ機能が表示されません。

たとえば、apr_pollset_addプリミティブは機能しません。常に1を返し(0を返す必要がある場合)、機能しません(ソーステストではチャームのように機能します)。

そのプリミティブに関連するAPRlibのすべてのコードを変更して、-1が返されるようにしました。Apacheテストを実行すると、期待される動作(-1を返す)が表示されますが、.so libsからプリミティブを呼び出すと、常に1が返されます。

libには、常に1を返す関数のラッパーがあるとほぼ確信しています。

何が起こっているのかについての手がかりはありますか?

4

1 に答える 1

1

それで、ついに私は問題を見つけました。

私のシステムには libapr が既にインストールされていたので、-libapr-1 を使用すると、プログラムが以前にインストールされたバージョンの libapr にリンクされます。それが、コードの変更に応答しなかった理由です。

apr_pollset_addプリミティブに関しては、うまく機能しています。受け入れられない通常のファイル記述子を追加していたため、 apr がpoll_ctlを呼び出すと、システムによってエラーが返されます。

于 2012-12-21T04:29:18.423 に答える