我正在尝试从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)有没有办法静态链接这些库?
发布于 2019-05-12 04:20:04
经过研究,静态链接libresolv和libSystem似乎是不可能的,也是不可取的。
在其他库中,libSystem包含libc。DNS包含诸如res_init之类的libresolv功能。两者都是由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来确认它是否正常工作。
https://stackoverflow.com/questions/56091994
复制相似问题