ما هي الطريقة المتعارف عليها لتقديم وصلة autoconf في مكتبات شبكة سولاريس؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

في سولاريس، عند ترجمة برنامج يستخدم مآخذ، تحتاج إلى ربطه مع -lnsl -lsocket. وقد كتب العديد من هذه البرامج أصلا لينكس (حيث هناك حاجة إلى أي مكتبات إضافية)، وبالتالي لا تحقق لهذه المكتبات في البرامج النصية تكوين، وعلى الرغم من أن يشكل إضافة بسيطة إلى حد ما. شيء من هذا القبيل (غير مجربة):

AC_SEARCH_LIBS(gethostbyname, nsl, , AC_MSG_ERROR([gethostbyname not found]))
AC_SEARCH_LIBS(connect, socket, , AC_MSG_ERROR([connect not found]))

هل هناك طريقة متعارف عليها للقيام بذلك الاختيار؟ ربما المدرجة في التوزيع autoconf؟ هل تتخيل أن هناك حاجة واسعة النطاق بدلا عن ذلك، ولكن جوجل لا تقول لي.

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

المحلول

وأعتقد أن الأقرب إلى <م> طريقة متعارف عليها للتحقق من هذا هو في AX_LIB_SOCKET_NSL ماكرو من Autoconf الأرشيف :

# ===========================================================================
#        http://www.nongnu.org/autoconf-archive/ax_lib_socket_nsl.html
# ===========================================================================
#
# SYNOPSIS
#
#   AX_LIB_SOCKET_NSL
#
# DESCRIPTION
#
#   This macro figures out what libraries are required on this platform to
#   link sockets programs.
#
#   The common cases are not to need any extra libraries, or to need
#   -lsocket and -lnsl. We need to avoid linking with libnsl unless we need
#   it, though, since on some OSes where it isn't necessary it will totally
#   break networking. Unisys also includes gethostbyname() in libsocket but
#   needs libnsl for socket().
#
# LICENSE
#
#   Copyright (c) 2008 Russ Allbery <rra@stanford.edu>
#   Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
#   Copyright (c) 2008 Warren Young <warren@etr-usa.com>
#
#   Copying and distribution of this file, with or without modification, are
#   permitted in any medium without royalty provided the copyright notice
#   and this notice are preserved.

AU_ALIAS([LIB_SOCKET_NSL], [AX_LIB_SOCKET_NSL])
AC_DEFUN([AX_LIB_SOCKET_NSL],
[
        AC_SEARCH_LIBS([gethostbyname], [nsl])
        AC_SEARCH_LIBS([socket], [socket], [], [
                AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket -lnsl $LIBS"],
                [], [-lnsl])])
])

نصائح أخرى

لا أستطيع أن أتذكر أي رمز النهائي من على قمة رأسي، ولكنك تريد عادة للتحقق ما إذا كان يمكن ربط برنامج استدعاء الدالة gethostbyname() دون أي يبس إضافية أولا. إلا إذا فشل ذلك، كنت ترغب في محاولة المكتبة nsl.

وأشياء مماثلة تنطبق على سبيل المثال للمكتبة m.

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