Why configure failed to search libws2_32.a in MinGW+MSYS ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am porting a library and some utils from linux to windows.

My build PC is a Windows 7, with MSYS+MinGW installed in both D:\MinGW (first choice) and C:\MinGW (installer default).

Given a short WinSock program source _testlib.c_ here:

    /* testlib.c */
    #include <stdio.h>
    #include <windows.h>
    #include <winsock2.h>
    int main( void ) {
        printf( "%d\n", WSAGetLastError() );
        return 0;
    }

Directly compile of the testlib.c goes just fine. So I think the MSYS+MinGW works well. To simulate the autotools' progress, I tried that compile to testlib.o and then link the execution. It works too.

    $ gcc -c -o testlib.o testlib.c && gcc -o out testlib.o -lws2_32 && ls -l out*
    -rwxr-xr-x 1 Administrator Administrators 48899 Dec 27 16:27 out.exe

After that, I turn it into autotools:

    # configure.ac
    AC_PREREQ([2.61])
    AC_INIT([testlib], [0.0.0], [<ooxx@xxxx>])
    AM_INIT_AUTOMAKE([-Wall foreign])
    AC_PROG_CC
    AC_CHECK_LIB([ws2_32], [WSAGetLastError])
    AC_CHECK_LIB([libws2_32], [WSAGetLastError])
    AC_CONFIG_FILES([Makefile])
    AC_OUTPUT

    # Makefile.am
    noinst_PROGRAMS = out
    out_SOURCES = testlib.c

Note that, in the configure.ac file, I check both ws2_32 and libws2_32 to confirm the library file name rules.
After first `autoconf' failure, my `autoreconf -i' succeed, and the `./configure' reports:

> checking for a BSD-compatible install... /bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> 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
> checking for style of include used by make... GNU
> checking dependency style of gcc... gcc3
> checking for WSAGetLastError in -lws2_32... no
> checking for WSAGetLastError in -llibws2_32... no
> configure: creating ./config.status
> config.status: creating Makefile
> config.status: executing depfiles commands

Note that, (1) both library libws2_32.a check report `no', and (2) the compiler is exactly my simulation target `gcc'.

I know that I can add a check into configure.ac to examine whether building in mingw or cygwin, but is this checking supposed to be fully examination for the real build environment ? If it works fine, LIB variable should be full filled with all required library link options. If there a simple way by adjust my MSYS+MinGW environment to make autoconf works, please tell me.

Regards.

Levi G.
Haskell is a beautiful language.

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
https://lists.gnu.org/mailman/listinfo/autoconf

[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux