Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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
什么';s MacOSX上的文件夹/BinaryCache/(编译php时)_Php_Macos_Compiler Construction_Linker - Fatal编程技术网

什么';s MacOSX上的文件夹/BinaryCache/(编译php时)

什么';s MacOSX上的文件夹/BinaryCache/(编译php时),php,macos,compiler-construction,linker,Php,Macos,Compiler Construction,Linker,如果我查看股票PHP上的PHP配置选项,我会发现libpng、libjpeg和libfreetype都启用了一些神奇的选项: '--with-freetype-dir=/BinaryCache/apache_mod_php/apache_mod_php-79.1~2/Root/usr/local' '--with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-79.1~2/Root/usr/local' '--with-png-dir=/

如果我查看股票PHP上的PHP配置选项,我会发现libpng、libjpeg和libfreetype都启用了一些神奇的选项:

'--with-freetype-dir=/BinaryCache/apache_mod_php/apache_mod_php-79.1~2/Root/usr/local'
'--with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-79.1~2/Root/usr/local'
'--with-png-dir=/BinaryCache/apache_mod_php/apache_mod_php-79.1~2/Root/usr/local'
他们指向一个奇怪的文件夹/BinaryCache/,我不知道他们是如何修复的

我正在尝试在MacOSX上重新编译php(php5.4,不,我不想使用Mamp),我不想提供自定义库,如freetype、jpeg和png。理想情况下,这些lib静态链接到二进制文件,而放置在/usr/lib中的更“常见”的库则动态链接

由于某种原因,它不起作用。即使使用“/configure--enable static”或“/configure--enable static=yes”,它也始终会生成一个与我的自定义libs链接的二进制文件。这可能与我每次收到的以下消息有关:

checking if cc static flag -static works... no
Otool为我提供了以下输出:

otool -L sapi/cli/php
sapi/cli/php:
/Users/nicolas/Documents/git/php/staticlib/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.2.0)
/Users/nicolas/Documents/git/php/staticlib/lib/libfreetype.6.dylib (compatibility version 17.0.0, current version 17.2.0)
/Users/nicolas/Documents/git/php/staticlib/lib/libpng16.16.dylib (compatibility version 23.0.0, current version 23.0.0)
/Users/nicolas/Documents/git/php/staticlib/lib/libjpeg.9.dylib (compatibility version 10.0.0, current version 10.0.0)
有什么建议吗?如何访问/BinaryCache目录以及它的作用是什么

提前感谢,,
尼古拉斯

所以,我找到了一个可能的方法,但我不确定他们是否就是这样做的

我最终修补了Makefile,没有为这些库使用动态链接器,而是链接到它们的静态.a文件。我通过一个简单的SED命令实现了这一点:

sed -e '/^EXTRA_LIBS =/ s/ -lpng//' \
    -e '/^EXTRA_LIBS = / s/ -ljpeg//' \
    -e '/^EXTRA_LIBS = / s/ -lintl//' \
    -e '/^EXTRA_LIBS = / s/ -lfreetype//' \
    -e "/^EXTRA_LDFLAGS =/ s/.*/EXTRA_LDFLAGS = \$(shell find ..\/staticlib\/lib -iname '*.a' -type f) -framework CoreFoundation/" \
    -e "/^EXTRA_LDFLAGS_PROGRAM =/ s/.*/EXTRA_LDFLAGS_PROGRAM = \$(shell find ..\/staticlib\/lib -iname '*.a' -type f) -framework CoreFoundation/" \
    $phpname/Makefile >$phpname/Makefile.edit

mv -f $phpname/Makefile.edit $phpname/Makefile
虽然./configure脚本通过检测和激活库完成了它的工作,但我们只是告诉链接器忽略-lpng、-ljpeg、-lintl和-lfreetype标志,而是链接到这些库的*.a文件(我在../staticlib文件夹中构建了它们)。“查找”命令的输出为:

staticlib/lib/libasprintf.a
staticlib/lib/libfreetype.a
staticlib/lib/libgettextpo.a
staticlib/lib/libintl.a
staticlib/lib/libjpeg.a
staticlib/lib/libpng16.a
我最终得到了一个二进制文件,它不再与/Users/nicolas/Documents/git/php/staticlib/lib/中的dylibs动态链接,现在可以在同一版本的MacOSX上移植

PM我,如果你想要构建脚本

最好的, 尼古拉斯