1

我正在开发一个用 C 编写的新 PHP 扩展。通常,我用来构建它的命令如下所示:

phpize
./configure --enable-framework
make
sudo make install

所以这里没有什么太疯狂的,只是标准的。我config.m4的非常基本,看起来像这样:

PHP_ARG_ENABLE(framework, whether to enable framework support,
[ --enable-framework   Enable Framework support])

if test "$PHP_FRAMEWORK" = "yes"; then
    AC_DEFINE(HAVE_FRAMEWORK, 1, [Whether you have Framework])
    PHP_NEW_EXTENSION(framework, framework.c, $ext_shared)
fi

但是我有multi.o从 gccgo 生成的二进制文件,我想成为编译过程的一部分。之后添加它framework.c不起作用;就像对.c源文件一样。

因为它Makefile是自动生成的,所以它显然不知道multi.o,所以我知道它必须在这个config.m4文件中的某个地方,但我不知道在哪里。

有人知道我需要做什么才能使其正常工作吗?

4

1 回答 1

0

我已将此行添加到我的config.m4文件中,并且似乎已修复它:

EXTRA_LDFLAGS=multi.o

所以现在整个文件看起来像这样:

PHP_ARG_ENABLE(framework, whether to enable framework support,
[ --enable-framework   Enable Framework support])

if test "$PHP_FRAMEWORK" = "yes"; then
    AC_DEFINE(HAVE_FRAMEWORK, 1, [Whether you have Framework])
    PHP_NEW_EXTENSION(framework, framework.c, $ext_shared)
    EXTRA_LDFLAGS=multi.o
fi

这会生成第36MakefileEXTRA_LDFLAGS = multi.o的行。然后这会拉入我需要的源并正常工作。

不确定这是否是最好/正确的方法,但它确实有效。

于 2013-11-11T14:13:08.157 回答