के साथ परिचित (पर्याप्त) नहीं है मुझे कुछ सी कोड मिला है जो लिनक्स के लिए लिखा गया था और सॉकेट और arpa/inet.h पर निर्भर करता है साथ ही libusb.h और मैं संकलन करना चाहता हूं यह मिनीजीडब्ल्यू के तहत विंडोज के लिए है। (ध्यान दें कि वर्तमान प्रोजेक्ट में बस एक बहुत ही सरल मेकफ़ाइल है और यह ऑटोटूल पर भरोसा नहीं करता है)।MinGW पर gnulib के साथ प्रारंभ करना और autotools
ऐसा लगता है कि gnulib का उपयोग मिनीगू के तहत विंडोज के लिए संकलित करने में सक्षम होने का एक अच्छा तरीका होगा और मैंने उस दिशा में शुरुआत की है, लेकिन ऐसा लगता है कि यदि आप autotools से बहुत परिचित नहीं हैं तो आप गहरी खरबूजे वास्तव में जल्दी से।
तो यहाँ है कि मैं क्या कोशिश की है:
$ gnulib-tool --import getsockname,getsockopt,setsockopt,socket,socketlib,sockets,socklen,sys_socket,arpa_inet,inet_ntop,inet_pton,netinet_in
यह चलाता है और मुझे अंत में निम्न संदेश देता है:
Don't forget to
- add "lib/Makefile" to AC_CONFIG_FILES in ./configure.ac,
- mention "lib" in SUBDIRS in Makefile.am,
- mention "-I m4" in ACLOCAL_AMFLAGS in Makefile.am,
- mention "m4/gnulib-cache.m4" in EXTRA_DIST in Makefile.am,
- invoke gl_EARLY in ./configure.ac, right after AC_PROG_CC,
- invoke gl_INIT in ./configure.ac.
ठीक है, मेरे पास कोई configure.ac और न ही एक Makefile था। बजे, तो मैं उन्हें (निर्देशों के अनुसार इसके बाद के संस्करण) इस प्रकार बनाया:
$ cat Makefile.am
SUBDIRS = lib
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = m4/gnulib-cache.m4
और ...
0,123,$ cat configure.ac
AC_INIT([configure.ac])
AC_CONFIG_FILES([lib/Makefile])
AC_PROG_CC
gl_EARLY
gl_INIT
अब इस बिंदु पर, gnulib डॉक्स ग्रहण करने के लिए है कि आप autotools साथ घनिष्ठ रूप से परिचित हैं लगता है, तो वे आप अगले autotools साथ क्या करने की जरूरत के लिए निर्देश के सभी को छोड़ दें।
मैं क्या विभिन्न मंचों पढ़ने से यह पता लगाने कर लिया है से, ऐसा लगता है कि अगले चरणों के चलाने के लिए कर रहे हैं:
$ aclocal
$ autoconf
$ automake
$ configure
हालांकि
... जब मैं automake भाग गया मुझे मिल गया:
$ automake
configure.ac: no proper invocation of AM_INIT_AUTOMAKE was found.
configure.ac: You should verify that configure.ac invokes AM_INIT_AUTOMAKE,
configure.ac: that aclocal.m4 is present in the top-level directory,
configure.ac: and that aclocal.m4 was recently regenerated (using aclocal).
lib/Makefile.am:30: library used but `RANLIB' is undefined
lib/Makefile.am:30: The usual way to define `RANLIB' is to add `AC_PROG_RANLIB
' lib/Makefile.am: 30: configure.ac' and run
autoconf' फिर से।
हम्म ... ठीक है शायद यह कुछ चीजें हैं जो मैं अपने मेकफ़ाइल.एम में लापता हूं (क्योंकि मुझे पूरी तरह से यकीन नहीं है कि मेकफ़ाइल.एम में क्या जाना चाहिए) ... तो एक कदम वापस जा रहा है .. । के आसपास यह gl_EARLY और gl_INIT की तरह लगता है लाइन द्वारा की देखभाल की जानी चाहिए googling द्वारा
$ ./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
./configure: line 2497: gl_EARLY: command not found
./configure: line 2498: gl_INIT: command not found
rm: cannot lstat `conftest.exe': Permission denied
मैं क्या पढ़ा है से: मैं autoconf चरण में ऊपर बना लिया गया है कि कॉन्फ़िगर फ़ाइल को चलाने के लिए सक्षम होना चाहिए Makefile.am फ़ाइल (ACLOCAL_AMFLAGS = -I m4) में जोड़ा गया है, लेकिन इस बिंदु पर मुझे पूरी तरह से यकीन नहीं है कि मैं इस के autotools भाग को सही तरीके से कर रहा हूं। क्या कोई यह बता सकता है कि मैं यहां क्या गलत कर रहा हूं?