我正在尝试加载使用 SWIG 制作的 PHP 扩展,但在启动 PHP 时出现以下错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/libtg.so' - /usr/lib/php5/20090626/libtg.so: undefined symbol: __gxx_personality_v0 in Unknown on line 0
我尝试加载的扩展名已命名libtg.so
并使用以下命令编译:
g++ -shared libtg_wrap.o -o libtg.so
libtg_wrap.o
SWIG 生成的包装器代码的目标文件在哪里。
缺少的符号__gxx_personality_v0
在 中找到libstdc++.so
,从以下命令可以看出:
$ nm -D /usr/lib/libstdc++.so.6 | grep __gxx_personality_v0
00000000000b9990 T __gxx_personality_v0
libstdc++.so
中引用libtg.so
,从以下命令可以看出:
$ ldd libtg.so
linux-vdso.so.1 => (0x00007fff5f932000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f3fc937c000)
libm.so.6 => /lib/libm.so.6 (0x00007f3fc90f9000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f3fc8ee2000)
libc.so.6 => /lib/libc.so.6 (0x00007f3fc8b5f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3fc98fc000)
所以我不明白为什么它找不到符号。关于如何进一步调试的任何想法?