我得到了一个libxxx.so文件,我无法查看它的源代码,我可以用下面的命令编译我的c文件:
gcc -ldl libxxx.so my.c -a a.outa.out在命令行中工作得很好。但在我将其封装到PHP扩展中后,PHP显示了如下消息:
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/myextension.so' - /usr/lib64/php/modules/myextension.so: undefined symbol: xxxfunction in Unknown on line 0xxxfunction函数是由libxxx.so导出的函数。
我是C新手,我认为问题出在编译我的PHP扩展的方式上,我在谷歌上搜索了一下,但没有找到答案。
我想知道在gcc中是否有像-ldl这样的选项,这样我就可以指定在我的PHP扩展中使用libxxx.so。
我通过下一步编译了我的扩展:
cd myextension/
phpize
./configure
make
make install我已将libxxx.so文件移动到/usr/local/lib。
我的/etc/ld.so.conf:
include ld.so.conf.d/*.conf
/usr/local/lib我已经运行了lddconfig。
https://stackoverflow.com/questions/50809909
复制相似问题