أخطاء ربط libresolv عند بناء PHP 5.2.10 من المصدر على OS X

StackOverflow https://stackoverflow.com/questions/1204440

  •  05-07-2019
  •  | 
  •  

سؤال

لتبدأ, أنا عادة ما تختار لاستخدام قبل تجميعها الثنائية PHP, ولكن أنا اللازمة لبناء من مصدر معين تحتاج الأعمال التجارية.(أنا لست من النوع الذي يجمع مفتوحة المصدر تطبيقات للتسلية فقط.)

أنا بناء على OS X 10.6 وأنا الوقوع في الخطأ التالية عند محاولة make PHP 5.2.10 وحدة نمطية أباتشي (--with-apxs2):

Undefined symbols:
  "_res_9_dn_expand", referenced from:
      _zif_dns_get_mx in dns.o
  "_res_9_search", referenced from:
      _zif_dns_get_mx in dns.o
      _zif_dns_check_record in dns.o
  "_res_9_dn_skipname", referenced from:
      _zif_dns_get_mx in dns.o
      _zif_dns_get_mx in dns.o
ld: symbol(s) not found

هذه الرموز هي جزء من libresolv, التي يتم تضمينها في /usr/lib/libresolv.dylib على OS X (منذ على الأقل 10.4).علما بأن *.dylib ملفات ماك ما يعادل *.so الملفات على لينكس, و لقد نجحت في تجميعها في libiconv.dylib بالفعل طريق تمرير --with-iconv=shared,/usr إلى ./configure, والتي القضاء مماثلة رابط أخطاء iconv المكتبة.

عند تشغيل ./configure, يكشف /usr/include/resolv.h وتمكن في makefile.ولكن أنا لا يمكن أن يبدو لمعرفة كيفية الحصول على المكتبة المشتركة إلى الارتباط بشكل صحيح.أي نصائح على الحصول على هذا العمل ؟ أنا لم أفعل أي شيء مثل تمرير العرف أعلام رابط إلى ./configure, و جوجل قد لا تساعد لي هذه المشكلة للأسف.


تحرير: أنا المبنى من هذا القطران تحميل إذا كان أي شخص يريد أن محاولة لتكرار الخطأ على سنو ليوبارد.

هل كانت مفيدة؟

المحلول

حاول إضافة -lresolv إلى Makefile.

ويساعد هذا الأمل.لدي اقتراح من هذا المناقشة.

نصائح أخرى

إذا قمت بتعيين تكوين متغير البيئة قبل تشغيل تكوين النصي, لم يكن لديك إلى تحرير makefile.على سبيل المثال:

LIBS=-lresolv ./configure --with-apxs2 --with-gd (etc.)

هذا الحل عملت بالنسبة لي.

أنصح حل تبعيات باستخدام فينك/macports.بناء جميع المكونات باستخدام macports ومن ثم ترجمة php من مصدر مشيرا lib dirs إلى /opt/...

يمكنك حتى بناء php مباشرة من المصدر باستخدام macports.

بالنسبة لأولئك الذين لا يمكن معرفة إلى أين إضافة lresolv :)

تحرير Makefile, تجد خط:

EXTRA_LIBS = [...lots of libs here...]

وإضافة lresolv إلى هذا الخط مثل هذا:

EXTRA_LIBS = -lresolv [...lots of libs here...]

عملت بالنسبة لي على MacOS X 10.6 سنو ليوبارد أثناء ترجمة PHP على LiteSpeed.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top