如何在MacOS上将PHP编译为静态二进制文件?

时间:2019-05-11 15:59:46

标签: php c

我正在尝试从MacOS上的源代码编译PHP。我正在使用--enable-static配置选项来构建这样的静态库:

./configure --enable-static --disable-all
make

虽然这会生成有效的二进制文件,但是如果我使用otool检查二进制文件,则可以看到它正在使用两个共享库libresolv.9.dyliblibSystem.B.dylib

$ otool -L sapi/cli/php   
sapi/cli/php:
    /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.250.1)

有什么方法可以静态链接这些库吗?

1 个答案:

答案 0 :(得分:1)

研究此问题后,似乎无法或不希望静态链接libresolvlibSystem

libSystem在其他库中包含libc。 libresolv包含DNS功能,例如res_init。两者均由MacOS提供。 MacOS does not support static binaries

由于这些库始终在MacOS上可用,因此可以将它们用作共享库。

如果您需要支持旧版本的MacOS,则可以使用-mmacosx-version-min链接器标志:

LDFLAGS="-mmacosx-version-min=10.7" ./configure --enable-static --disable-all
LDFLAGS="-mmacosx-version-min=10.7" make

您可以通过使用otool -l并检查LC_VERSION_MIN_MACOSX来确认它是否有效。