Hello to all. I'm using ubuntu 11.04 (32-bits) to cross-compile some static libraries to windows.
I'm using mingw-w32 1.0, downloded from mingw-64 sf page. In some libraries I'm compiling, I have an error in the link time, when in the line of the source when e.g a function called myFunction() is called, in linking time the linker tries to call __impl__myFunction(), which is undefined. To reproduce this error, download libconfig-1.4.8.tar.gz from http://www.hyperrealm.com/libconfig/ The configure parameters I used were: --prefix=$BUILD_PATH --disable-shared --enable-static --host=i686-w64-mingw32 and the make output: $ make make all-recursive make[1]: Entrando no diretório `/home/devstar22/projects/3rd/libconfig-1.4.8' Making all in lib make[2]: Entrando no diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/lib' make all-am make[3]: Entrando no diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/lib' /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-libconfig.lo -MD -MP -MF .deps/libconfig_la-libconfig.Tpo -c -o libconfig_la-libconfig.lo `test -f 'libconfig.c' || echo './'`libconfig.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-libconfig.lo -MD -MP -MF .deps/libconfig_la-libconfig.Tpo -c libconfig.c -o libconfig_la-libconfig.o libconfig.c: In function '__config_locale_override': libconfig.c:100:2: warning: #warning "No way to modify calling thread's locale!" libconfig.c: In function '__config_locale_restore': libconfig.c:121:2: warning: #warning "No way to modify calling thread's locale!" mv -f .deps/libconfig_la-libconfig.Tpo .deps/libconfig_la-libconfig.Plo /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-scanner.lo -MD -MP -MF .deps/libconfig_la-scanner.Tpo -c -o libconfig_la-scanner.lo `test -f 'scanner.c' || echo './'`scanner.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-scanner.lo -MD -MP -MF .deps/libconfig_la-scanner.Tpo -c scanner.c -o libconfig_la-scanner.o mv -f .deps/libconfig_la-scanner.Tpo .deps/libconfig_la-scanner.Plo /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-grammar.lo -MD -MP -MF .deps/libconfig_la-grammar.Tpo -c -o libconfig_la-grammar.lo `test -f 'grammar.c' || echo './'`grammar.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-grammar.lo -MD -MP -MF .deps/libconfig_la-grammar.Tpo -c grammar.c -o libconfig_la-grammar.o mv -f .deps/libconfig_la-grammar.Tpo .deps/libconfig_la-grammar.Plo /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-scanctx.lo -MD -MP -MF .deps/libconfig_la-scanctx.Tpo -c -o libconfig_la-scanctx.lo `test -f 'scanctx.c' || echo './'`scanctx.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-scanctx.lo -MD -MP -MF .deps/libconfig_la-scanctx.Tpo -c scanctx.c -o libconfig_la-scanctx.o mv -f .deps/libconfig_la-scanctx.Tpo .deps/libconfig_la-scanctx.Plo /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-strbuf.lo -MD -MP -MF .deps/libconfig_la-strbuf.Tpo -c -o libconfig_la-strbuf.lo `test -f 'strbuf.c' || echo './'`strbuf.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIG_EXPORTS -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_la-strbuf.lo -MD -MP -MF .deps/libconfig_la-strbuf.Tpo -c strbuf.c -o libconfig_la-strbuf.o mv -f .deps/libconfig_la-strbuf.Tpo .deps/libconfig_la-strbuf.Plo /bin/bash ../libtool --tag=CC --mode=link i686-w64-mingw32-gcc -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -version-info 10:2:1 -no-undefined -L/home/devstar22/projects/build_windows/lib -o libconfig.la -rpath /home/devstar22/projects/build_windows/lib libconfig_la-libconfig.lo libconfig_la-scanner.lo libconfig_la-grammar.lo libconfig_la-scanctx.lo libconfig_la-strbuf.lo libtool: link: i686-w64-mingw32-ar cru .libs/libconfig.a libconfig_la-libconfig.o libconfig_la-scanner.o libconfig_la-grammar.o libconfig_la-scanctx.o libconfig_la-strbuf.o libtool: link: i686-w64-mingw32-ranlib .libs/libconfig.a libtool: link: ( cd ".libs" && rm -f "libconfig.la" && ln -s "../libconfig.la" "libconfig.la" ) /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-libconfig.lo -MD -MP -MF .deps/libconfig___la-libconfig.Tpo -c -o libconfig___la-libconfig.lo `test -f 'libconfig.c' || echo './'`libconfig.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-libconfig.lo -MD -MP -MF .deps/libconfig___la-libconfig.Tpo -c libconfig.c -o libconfig___la-libconfig.o libconfig.c: In function '__config_locale_override': libconfig.c:100:2: warning: #warning "No way to modify calling thread's locale!" libconfig.c: In function '__config_locale_restore': libconfig.c:121:2: warning: #warning "No way to modify calling thread's locale!" mv -f .deps/libconfig___la-libconfig.Tpo .deps/libconfig___la-libconfig.Plo /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-scanner.lo -MD -MP -MF .deps/libconfig___la-scanner.Tpo -c -o libconfig___la-scanner.lo `test -f 'scanner.c' || echo './'`scanner.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-scanner.lo -MD -MP -MF .deps/libconfig___la-scanner.Tpo -c scanner.c -o libconfig___la-scanner.o mv -f .deps/libconfig___la-scanner.Tpo .deps/libconfig___la-scanner.Plo /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-grammar.lo -MD -MP -MF .deps/libconfig___la-grammar.Tpo -c -o libconfig___la-grammar.lo `test -f 'grammar.c' || echo './'`grammar.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-grammar.lo -MD -MP -MF .deps/libconfig___la-grammar.Tpo -c grammar.c -o libconfig___la-grammar.o mv -f .deps/libconfig___la-grammar.Tpo .deps/libconfig___la-grammar.Plo /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-scanctx.lo -MD -MP -MF .deps/libconfig___la-scanctx.Tpo -c -o libconfig___la-scanctx.lo `test -f 'scanctx.c' || echo './'`scanctx.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-scanctx.lo -MD -MP -MF .deps/libconfig___la-scanctx.Tpo -c scanctx.c -o libconfig___la-scanctx.o mv -f .deps/libconfig___la-scanctx.Tpo .deps/libconfig___la-scanctx.Plo /bin/bash ../libtool --tag=CC --mode=compile i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-strbuf.lo -MD -MP -MF .deps/libconfig___la-strbuf.Tpo -c -o libconfig___la-strbuf.lo `test -f 'strbuf.c' || echo './'`strbuf.c libtool: compile: i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-strbuf.lo -MD -MP -MF .deps/libconfig___la-strbuf.Tpo -c strbuf.c -o libconfig___la-strbuf.o mv -f .deps/libconfig___la-strbuf.Tpo .deps/libconfig___la-strbuf.Plo /bin/bash ../libtool --tag=CXX --mode=compile i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-libconfigcpp.lo -MD -MP -MF .deps/libconfig___la-libconfigcpp.Tpo -c -o libconfig___la-libconfigcpp.lo `test -f 'libconfigcpp.c++' || echo './'`libconfigcpp.c++ libtool: compile: i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I.. -DPARSER_PREFIX=\"libconfig_yy\" -D_REENTRANT -DLIBCONFIGXX_EXPORTS -DLIBCONFIG_STATIC -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig___la-libconfigcpp.lo -MD -MP -MF .deps/libconfig___la-libconfigcpp.Tpo -c libconfigcpp.c++ -o libconfig___la-libconfigcpp.o mv -f .deps/libconfig___la-libconfigcpp.Tpo .deps/libconfig___la-libconfigcpp.Plo /bin/bash ../libtool --tag=CXX --mode=link i686-w64-mingw32-g++ -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -version-info 10:2:1 -no-undefined -L/home/devstar22/projects/build_windows/lib -o libconfig++.la -rpath /home/devstar22/projects/build_windows/lib libconfig___la-libconfig.lo libconfig___la-scanner.lo libconfig___la-grammar.lo libconfig___la-scanctx.lo libconfig___la-strbuf.lo libconfig___la-libconfigcpp.lo libtool: link: i686-w64-mingw32-ar cru .libs/libconfig++.a libconfig___la-libconfig.o libconfig___la-scanner.o libconfig___la-grammar.o libconfig___la-scanctx.o libconfig___la-strbuf.o libconfig___la-libconfigcpp.o libtool: link: i686-w64-mingw32-ranlib .libs/libconfig++.a libtool: link: ( cd ".libs" && rm -f "libconfig++.la" && ln -s "../libconfig++.la" "libconfig++.la" ) make[3]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/lib' make[2]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/lib' Making all in doc make[2]: Entrando no diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/doc' make[2]: Nada a ser feito para `all'. make[2]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/doc' Making all in tinytest make[2]: Entrando no diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/tinytest' i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT tinytest.o -MD -MP -MF .deps/tinytest.Tpo -c -o tinytest.o tinytest.c mv -f .deps/tinytest.Tpo .deps/tinytest.Po rm -f libtinytest.a i686-w64-mingw32-ar cru libtinytest.a tinytest.o i686-w64-mingw32-ranlib libtinytest.a make[2]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/tinytest' Making all in tests make[2]: Entrando no diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/tests' i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I. -I.. -I../tinytest -I../lib -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -MT libconfig_tests-tests.o -MD -MP -MF .deps/libconfig_tests-tests.Tpo -c -o libconfig_tests-tests.o `test -f 'tests.c' || echo './'`tests.c mv -f .deps/libconfig_tests-tests.Tpo .deps/libconfig_tests-tests.Po /bin/bash ../libtool --tag=CC --mode=link i686-w64-mingw32-gcc -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -L/home/devstar22/projects/build_windows/lib -o libconfig_tests.exe libconfig_tests-tests.o -L../tinytest -ltinytest -L../lib/.libs -lconfig libtool: link: i686-w64-mingw32-gcc -ggdb -I/home/devstar22/projects/build_windows/include -I/home/devstar22/projects/build_windows/include/evil-1/ -o libconfig_tests.exe libconfig_tests-tests.o -L/home/devstar22/projects/build_windows/lib -L/home/devstar22/projects/3rd/libconfig-1.4.8/tinytest -ltinytest -L/home/devstar22/projects/3rd/libconfig-1.4.8/lib/.libs /home/devstar22/projects/3rd/libconfig-1.4.8/lib/.libs/libconfig.a libconfig_tests-tests.o: In function `parse_and_compare': /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:37: undefined reference to `__imp__config_init' /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:38: undefined reference to `__imp__config_set_include_dir' /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:40: undefined reference to `__imp__config_read_file' /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:49: undefined reference to `__imp__config_write_file' /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:54: undefined reference to `__imp__config_destroy' libconfig_tests-tests.o: In function `parse_file_and_compare_error': /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:64: undefined reference to `__imp__config_init' /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:65: undefined reference to `__imp__config_read_file' /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:74: undefined reference to `__imp__config_destroy' libconfig_tests-tests.o: In function `parse_string_and_compare_error': /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:86: undefined reference to `__imp__config_init' /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:87: undefined reference to `__imp__config_read_string' /home/devstar22/projects/3rd/libconfig-1.4.8/tests/tests.c:95: undefined reference to `__imp__config_destroy' collect2: ld returned 1 exit status make[2]: ** [libconfig_tests.exe] Erro 1 make[2]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8/tests' make[1]: ** [all-recursive] Erro 1 make[1]: Saindo do diretório `/home/devstar22/projects/3rd/libconfig-1.4.8' make: ** [all] Erro 2 For example, line 37 in tests.c is: config_init(&cfg); but the linker calls __imp__config_init(), which is wrong. I read this is related to ms runtime and dllimport/dllexport. But I couldn't find anything which helps me to resolve the problem. Does anyone here know how to resolve this problem? Thanks in advance. -- Atenciosamente, Leandro ------------------------------------------------------------------------------ This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public