私はC++でapacheモジュールを書き込もうとしています。
基本モジュールは、.soで正常にコンパイルおよびリンクされています。サーバーに接続すると、すべて問題ありません。
std::stringを使おうとするまで。今、私は次のエラーを受け取ります:
Cannot load mod_foo.so into server:
/usr/lib/apache2/modules/mod_foo.so: undefined symbol:
_ZNSs4_Rep20_S_empty_rep_storageE
このシンボルは、標準ライブラリからstd::stringが使用するもののマングルバージョンであると思います。とにかく、コンパイル時または.soリンク時に、.soがこのライブラリを必要としていることを示すオプションを追加しますか?
.oファイルを次のようにコンパイルします。
g++-4.7 -fpic -c -O3 -pthread -g -iquote .
-I/usr/include/apache2 -I/usr/include/apr-1.0 -Wall -Wextra
-Werror -Wno-unknown-pragmas -fnon-call-exceptions
-std=gnu++11 -x c++ -o ___.o ___
.soを次のようにリンクします。
ld -Bshareable -o ___.so ___