1

これは、make構成後に実行した後に表示されるメッセージです。

Undefined symbols for architecture x86_64:
  "_res_9_init", referenced from:
      _zif_dns_check_record in dns.o
      _zif_dns_get_record in dns.o
      _zif_dns_get_mx in dns.o
  "_res_9_search", referenced from:
      _zif_dns_check_record in dns.o
      _zif_dns_get_record in dns.o
      _zif_dns_get_mx in dns.o
  "_res_9_dn_skipname", referenced from:
      _zif_dns_get_record in dns.o
      _zif_dns_get_mx in dns.o
  "_res_9_dn_expand", referenced from:
      _php_parserr in dns.o
      _zif_dns_get_mx in dns.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

設定方法

./configure --prefix=/usr/ --with-apxs2=/usr/sbin/apxs --with-mysql \
--with-pear --with-pdo-pgsql \
--with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock \
--with-pgsql --with-zlib \
--with-zlib-dir=/usr \
--with-openssl \
--without-iconv \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-mbregex \
--enable-sockets 

誰でも助けてください。

4

3 に答える 3

1

この 3 年以上前のバグ (ここおよびここで言及されている、なぜまだ修正されていないのですか?) は、次の手順を実行することによっても解決できます (または、間違ったライブラリをパスから移動することもできますが、これもうまくいく可能性があります)。 .

あなたを編集Makefileし、次のフラグをEXTRA_LIBS =セクションに追加します (既にある他のフラグに加えて):

EXTRA_LIBS = -lsResolv

あなたが言及した2番目のエラー:ext/phar/phar.php] Error 133MySQLバイナリインストーラーによってインストールされた「lib」ディレクトリ内のファイルの1つに絶対パスがないという事実が原因です(これはしばらくの間バグでした.なぜOracleは修理する??)。言及したエラー行の数行上を見ると、次のように表示されます。

Generating phar.php
dyld: Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/...

これを実行してそのファイルを確認します (以下のバージョン番号を自分のものに置き換えます (例: mysql-5.x.xx))。他のファイル参照のようにフル パスが含まれていないことに注意してください。

# otool -L /usr/local/mysql-5.6.14-osx10.6-x86_64/lib/libmysqlclient.18.dylib

次に、次のように修正します。

# sudo install_name_tool -id /usr/local/mysql-5.6.14-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/local/mysql-5.6.14-osx10.6-x86_64/lib/libmysqlclient.18.dylib

もう一度確認して、次のことを確認してください。

# otool -L /usr/local/mysql-5.6.14-osx10.6-x86_64/lib/libmysqlclient.18.dylib

これで、正常にコンパイルできるはずです。

于 2013-10-18T15:16:56.377 に答える
0

問題の実際の原因はあいまいなままですが、私の構成が間違っていることは確かです。問題を引き起こしている競合は、ネイティブ php のすべての痕跡が削除された場合にのみ解決されました - 文字通り /usr/bin から削除され、最新の安定した php 5.4 tarball をダウンロードして解凍し、これらのオプションで再構成しました。

./configure  \
--prefix=/usr  \
--mandir=/usr/share/man  \
--infodir=/usr/share/info  \
--sysconfdir=/private/etc  \
--with-apxs2=/usr/sbin/apxs  \
--enable-cli  \
--with-config-file-path=/etc  \
--with-libxml-dir=/usr  \
--with-openssl=/usr  \
--with-kerberos=/usr  \
--with-zlib=/usr  \
--enable-bcmath  \
--with-bz2=/usr  \
--enable-calendar  \
--with-curl=/usr  \
--enable-dba  \
--enable-exif  \
--enable-ftp  \
--with-gd  \
--enable-gd-native-ttf  \
--with-icu-dir=/usr  \
--with-iodbc=/usr  \
--with-ldap=/usr  \
--with-ldap-sasl=/usr  \
--with-libedit=/usr  \
--enable-mbstring  \
--enable-mbregex  \
--with-mysql=mysqlnd   \
--with-mysqli=mysqlnd  \
--without-pear  \
--with-pdo-mysql=mysqlnd  \
--with-mysql-sock=/var/mysql/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-pcre-regex  \
--with-pgsql=/usr  \
--with-pdo-pgsql=/usr \
--with-freetype-dir=/usr/X11 \
--with-jpeg-dir=/usr  \
--with-png-dir=/usr/X11

その後、 $ sudo make test を実行してからインストールしました。

次に、Apache $ sudo serveradmin stop/start web を再起動しました

その後、それは機能しました。

于 2012-07-13T23:16:44.023 に答える
0

ネイティブの mysql および mysqli ドライバーを使用して PHP をコンパイルします。このエラーは、php と mysql のライブラリ間の競合が原因で発生します。ネイティブ ドライバーを使用したくない場合は、"export EXTRA_CFLAGS=-lresolv" を使用して make を実行すると、未定義のシンボルが解決されます。

構成を次のように変更します。

./configure \
--prefix=/usr/ \
--with-apxs2=/usr/sbin/apxs 
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-pear --with-pdo-pgsql \
--with-mysql-sock=/tmp/mysql.sock \
--with-pgsql --with-zlib \
--with-zlib-dir=/usr \
--with-openssl \
--without-iconv \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-mbregex \
--enable-sockets 

ちなみに、/tmp に mysql ソケットを残す場合は、"chmod +t /tmp" を実行することを忘れないでください。

于 2012-07-12T18:15:59.327 に答える