PHP Warning: PHP Startup: Unable to load dynamic library 'xxx.so'

今天执行 php -dextension=vld.so -dvld.active=1 -dvld.verbosity=0 -dvld.dump_paths=0 CConst.php 时,遇到一个错误:
PHP Warning:  PHP Startup: Unable to load dynamic library 'vld.so' (tried: /usr/lib64/php/modules/vld.so (/usr/lib64/php/modules/vld.so: undefined symbol: dumpexceptiontable), /usr/lib64/php/modules/vld.so.so (/usr/lib64/php/modules/vld.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

经过查看,发现vld.so 确实在/usr/lib64/php/modules路径下,而且是刚编译好的,应该没有问题.但是却提示一个奇怪的函数名dumpexceptiontable不存在. dumpexceptiontable 这个函数确实是修改过的一个函数的名字,后来又改了名字. 编译通过之后,替换原来的so文件,就报了这个错误. 

后来在代码中还真找到了dumpexceptiontable 的调用的地方,但是,由于定义的地方修改了函数名字,这个地方应该编译报错才对? 为什么编译却通过了,而且so文件也生成了呢? 百思不得其解.

不过,找到了问题的根源,把函数名字dumpexceptiontable替换为新改的名字,一切恢复正常了.

如果你也遇到了可以找到so文件, 某个函数找不到的情况, 也可以考虑一下,可能是这个原因.

发布了85 篇原创文章 · 获赞 9 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/jimmyleeee/article/details/103989872