2013-10-10 13 views
0

如果我看的股票PHP PHP的配置選項,我看到使用libpng,libjpeg和libfreetype建立與一些神奇的選項中啓用:什麼是文件夾/ BinaryCache/MacOSX上(當編譯PHP)

'--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。理想情況下,這些庫可以靜態鏈接到二進制文件,並且放置在/ usr/lib中的更多「通用」庫被動態鏈接。

由於某種原因,它不起作用。即使使用'./configure --enable-static'或'./configure --enable-static = yes',它始終會生成一個與我的自定義庫鏈接的二進制文件。這可能與以下消息時每次都遇到:

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目錄,它有什麼作用?

由於提前, 薩科

回答

0

所以,我發現了一個可能的方式,但我不知道這是他們怎麼做。

我最終修補了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文件夾中)。 find命令的輸出是:

staticlib/lib/libasprintf.a 
staticlib/lib/libfreetype.a 
staticlib/lib/libgettextpo.a 
staticlib/lib/libintl.a 
staticlib/lib/libjpeg.a 
staticlib/lib/libpng16.a 

我結束了,這不是動態再聯繫到dylibs在/用戶/尼古拉斯/文檔/ git的/ PHP的二進制/ staticlib/lib中/,現在在便攜式相同版本的MacOSX。

PM如果你想要構建腳本。

最佳, 薩科