我想在C++中編寫一個Apache模塊。C++ Apache模塊:失敗`_ZNSs4_Rep20_S_empty_rep_storageE`
基本模塊正在編譯並鏈接.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
我認爲這個符號是什麼性病的錯位版本:: string的標準庫的使用。反正在compile或.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 ___
我將鏈接改爲'g ++ - 4.7 -shared -ldl -fPIC -rdynamic -g -O3 -pthread -Wall -Wextra -Werror -fnon-call-exceptions -std = gnu ++ 11 -o ___。所以___',它的工作,我想。 – 2012-08-13 18:21:55