在MacOSX 10.10(yosemite)上编译php5.5.18时出错

时间:2014-10-19 19:07:57

标签: php c++ macos apache

我正在尝试在优胜美地上编译php(5.5.18,版本并不重要),但在链接阶段失败了。看起来有些apache符号消失了吗?

(以下在Mountain Lion上表现完美,但在优胜美地上失败了。)

cc -bundle -bundle_loader /usr/sbin/httpd -L/usr/lib -laprutil-1 -lldap -llber -lexpat -liconv -lsqlite3 -lldap -llber -L/usr/lib -lapr-1 -lpthread -I/usr/include -g -O2 -fvisibility=hidden  -arch x86_64 -bind_at_load
<SNIP>
sapi/apache2handler/php_functions.o main/internal_functions.o  -lcrypto -lssl -lcrypto -lz -lexslt -ltidy -lresolv -ledit -lncurses -lltdl -lldap -llber -lstdc++ -liconv -liconv -lz -lcrypto -lssl -lcrypto -lcurl -lbz2 -lz -lcrypto -lssl -lcrypto -lm -lxml2 -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lcurl -lxml2 -lz -lbz2 -lxml2 -lnetsnmp -lcrypto -lxml2 -lxml2 -lxml2 -lxml2 -lxml2 -lxml2 -lxml2 -lxslt  -o libs/libphp5.bundle && cp libs/libphp5.bundle libs/libphp5.so
Undefined symbols for architecture x86_64:
  "_ap_get_server_version", referenced from:
      _zif_apache_get_version in php_functions.o
      _zm_info_apache in php_functions.o
  "_ap_log_error", referenced from:
      _php_pre_config in sapi_apache2.o
      _php_handler in sapi_apache2.o
      _php_apache_sapi_log_message in sapi_apache2.o
  "_ap_log_rerror", referenced from:
      _php_handler in sapi_apache2.o
      _php_apache_sapi_log_message in sapi_apache2.o
  "_unixd_config", referenced from:
      _zm_info_apache in php_functions.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libs/libphp5.bundle] Error 1

有什么想法吗?我检查了/usr/lib/libapr-1.dylib(带有nm -g)并且符号不存在。我通常应该在哪里找到这些符号?这是否缺少lib?真正奇怪的是我的自定义构建脚本在10.9上正常工作但在10.10上失败

感谢您的帮助! 尼古拉斯

3 个答案:

答案 0 :(得分:2)

原来它使用了以下包含路径:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/apache2/

而不是正常的:

/usr/include/apache2/

更多信息:

$ xcodebuild -version -sdk macosx

MacOSX10.9.sdk - OS X 10.9 (macosx10.9)
SDKVersion: 10.9
Path: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
PlatformVersion: 1.1
PlatformPath: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform
ProductBuildVersion: 13F26
ProductCopyright: 1983-2014 Apple Inc.
ProductName: Mac OS X
ProductUserVisibleVersion: 10.9.5
ProductVersion: 10.9.5

奇怪,我希望它可以帮助其他人。

最佳, 尼古拉斯

答案 1 :(得分:0)

首先安装Xcode 6.1,然后:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include /usr/include

答案 2 :(得分:0)

我使用MacPorts安装了一些库(比如mcrypt),然后使用以下命令编译5.5.18源代码(使用Xcode命令行)./configure -command:

  

./ configure --prefix = / usr --mandir = / usr / share / man --infodir = / usr / share / info --sysconfdir = / private / etc --enable-gd-native-ttf - -with-icu-dir = / usr --with-ldap = / usr --with-ldap-sasl = / usr --with-libedit = / usr --enable-mbstring --enable-mbregex --with-mysql = mysqlnd --with-mysqli = mysqlnd --without-pear --with-pear = no --with-pdo-mysql = mysqlnd --with-mysql-sock = / tmp / mysql.sock --with-readline = / usr --enable-shmop --with-snmp = / usr --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --enable-wddx --with-xmlrpc --with-iconv-dir = / usr --with-xsl = / usr --enable-zip --with-mcrypt = / opt / local / include --without-iconv --with-freetype -dir = / opt / local --with-apxs2 = / usr / sbin / apxs --with-openssl = / usr --with-curl = / usr --with-zlib = / usr --with-bz2 = / usr

相关问题