我可以强制我的PHP C扩展在编译时链接pthread吗?

时间:2014-07-28 23:32:38

标签: php c php-extension

在我的PHP扩展中,我有一个m4文件config.m4。据我了解,当我运行phpize时,它会从configure生成config.m4文件,并且运行configure会生成Makefile。在我的config.m4文件中,我使用

之类的行链接外部库
PHP_ADD_LIBRARY(library,,EXTENSION_SHARED_LIBADD)
PHP_SUBST(EXTENSION_SHARED_LIBADD)

导致Makefile包含行

EXTENSION_SHARED_LIBADD = -llibrary

但是,当我尝试通过前缀

链接pthread时
PHP_ADD_LIBRARY(pthread,,EXTENSION_SHARED_LIBADD)

Makefile中的相关行不会更改,即使我将pthread替换为test_string也是如此。

我还尝试添加config.m4LIBS="-lpthread $LIBS",但这对Makefile没有任何影响。

我终于尝试将行EXTRA_LDFLAGS=-lpthread添加到config.m4,即使它确实开始将-lpthread传递给编译器,但是命令行中的标志来得太早才产生效果。它似乎必须在其他库之后才能工作。

我可以在config.m4中执行哪些操作,make-lpthread的参数gcc传递给EXTENSION_SHARED_LIBADD {{1}}中的其他库之后?

1 个答案:

答案 0 :(得分:0)

我通过替换

来解决这个问题
PHP_ADD_LIBRARY(pthread,,EXTENSION_SHARED_LIBADD)

EXTENSION_SHARED_LIBADD="-lpthread $EXTENSION_SHARED_LIBADD"

这绕过了从configure剥离-lpthread的{​​{1}}支票。