我正在尝试从MacOS上的源代码编译PHP。我正在使用--enable-static
配置选项来构建这样的静态库:
./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)
有什么方法可以静态链接这些库吗?
答案 0 :(得分:1)
研究此问题后,似乎无法或不希望静态链接libresolv
和libSystem
。
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
来确认它是否有效。