gpt4 book ai didi

带有外部共享库的 PHP 自定义 C 扩展

转载 作者:搜寻专家 更新时间:2023-10-31 22:12:20 25 4
gpt4 key购买 nike

我想开发一个依赖于外部共享库的扩展。我目前的问题是我无法将此共享库链接到我的扩展程序。

我的开发环境是Fedora Linux x64 + PHP 5.4。这个外部共享库是专有的,我只有它的头文件 (.h) 和 .so 文件(32 位和 64 位)。

项目当前的config.m4文件如下:

PHP_ARG_WITH(projectname,
[Whether to enable ProjectName support],
[ --with-projectname enable ProjectName support])

if test "$PHP_PROJECTNAME" != "no"; then
PHP_ADD_LIBRARY_WITH_PATH(externallib, lib64, PROJECTNAME_SHARED_LIBADD)

AC_DEFINE(HAVE_PROJECTNAME, 1, [Whether you have ProjectName])
PHP_NEW_EXTENSION(projectname, projectname.c, $ext_shared)
fi

这里的问题是每次我运行 ./configure --with-projectname 生成的 makefile 没有任何对库的引用,而且编译的 .so 文件失败(很明显)。

如果我有办法根据架构确定正确的 lib 目录,这也会很有用。

最佳答案

您已经包含了库,但看起来您缺少实际的链接选项。我已经很长时间没有这样做了,但我认为像下面这样的事情应该可行。

EXTERNAL_LIB="blahLibName"
LIB_LINK_CMD="-L/usr/local/lib -l$EXTERNAL_LIB"

PHP_ADD_LIBRARY_WITH_PATH(externallib, lib64, PROJECTNAME_SHARED_LIBADD)
PHP_EVAL_LIBLINE($LIB_LINK_CMD, PROJECTNAME_SHARED_LIBADD)

此处的语法可能根本不正确,但您绝对需要 PHP_EVAL_LIBLINE。

关于带有外部共享库的 PHP 自定义 C 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com