Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MacOS上将PHP编译为静态二进制文件?_Php - Fatal编程技术网

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

如何在MacOS上将PHP编译为静态二进制文件?,php,Php,我试图在MacOS上从源代码编译PHP。我正在使用--enable staticconfigure选项构建静态库,如下所示: ./configure --enable-static --disable-all make 虽然这会生成一个工作二进制文件,但如果我使用otool检查二进制文件,我可以看到它使用了两个共享库,libresolv.9.dylib和libSystem.B.dylib: $ otool -L sapi/cli/php sapi/cli/php: /usr/li

我试图在MacOS上从源代码编译PHP。我正在使用
--enable static
configure选项构建静态库,如下所示:

./configure --enable-static --disable-all
make
虽然这会生成一个工作二进制文件,但如果我使用
otool
检查二进制文件,我可以看到它使用了两个共享库,
libresolv.9.dylib
libSystem.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)

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

经过研究,似乎不可能或不希望静态链接
libresolv
libSystem

libSystem
包含libc和其他库
libresolv
包含DNS函数,如
res\u init
。两者都由MacOS提供。马科斯

由于这些库在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\u VERSION\u MIN\u MACOSX

来确认它是否工作。这一定是一个副本。我知道如何回答这个问题。基本上,你不能,除非你想确保你的二进制文件不能工作。为什么使用C标记?@WeatherVane基本上这是一个C/C++链接问题,实际上是一个通用问题。