【问题标题】:PHP Warning: PHP Startup: Unable to load dynamic library: /home/lib.so so: undefined symbol: __gxx_personality_v0 in Unknown on line 0PHP 警告:PHP 启动:无法加载动态库:/home/lib.so 所以:未定义符号:__gxx_personality_v0 in Unknown on line 0
【发布时间】:2011-09-01 14:26:56
【问题描述】:

我已经成功地创建了一个 .php 扩展名。我想更进一步。使用我希望我的 .php 链接的 .cc 我想添加 library.so。 编译时出现此错误。

如何解决?

谢谢。欣赏

编辑:

我编译成功了。现在我有这个错误: 未定义符号:_ZN3CarC1Ei。为什么? 确实,我没有添加 .cc 代码。如何在 config.m4 中添加包含我希望在 php 中使用的 .h 和 .cc 的 .so 文件?

【问题讨论】:

    标签: php c++ c shared-libraries


    【解决方案1】:

    我猜你需要链接libstdc++。或者用g++编译而不是gcc,那么libstdc++会默认链接。

    【讨论】:

    • _ZN3CarC1EiCar::Car(int) 的错位名称。很可能您还需要链接它。
    • 您需要在config.m4:PHP_NEW_EXTENSION(vehicles, vehicles.cc car.cc, $ext_shared) 中添加类似的内容。检查this link
    • 问题是我不想在我的配置文件中添加 car.cc。不加怎么解决?
    【解决方案2】:

    显然你的扩展是用 g++ 编译的,你没有链接 stdc++ 库。您需要在 config.m4 中添加类似这样的内容:

      PHP_SUBST(YOUREXT_SHARED_LIBADD)
      PHP_ADD_LIBRARY_WITH_PATH(stdc++, "", YOUREXT_SHARED_LIBADD)
    

    查看示例:http://svn.php.net/viewvc/pecl/rar/trunk/config.m4?revision=299933&view=markup

    【讨论】:

    • 尝试 make clean,再次 phpize,再次配置并 make
    猜你喜欢
    • 2013-07-21
    • 2017-04-24
    • 2020-04-07
    • 2017-05-06
    • 2021-08-27
    相关资源
    最近更新 更多