如何在MacOS上将PHP编译为静态二进制文件?
我试图在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
--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++链接问题,实际上是一个通用问题。