2012-08-21 5 views
5

Ich werde NetCDF in Windows verwenden und ich denke, dass es mit MinGW kompiliert werden muss, da mein Hauptprogramm und alle anderen Bibliotheken bereits mit MinGW kompiliert sind.Libtool: Objektnamen Konflikte im Archiv (NETCDF + MinGW)

Aber wenn ich MinGW (GCC-Version 4.6.2) verwendet. Ich habe einige Fehlermeldungen:

Making all in liblib 
    make[2]: Entering directory `/c/Users/ylylyl/Documents/CB/NETCDF/netcdf-4.2.1.1/liblib' 
    /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include -DDLL_NETCDF -DDLL_EXPORT -g -O2 -MT libnetcdf_la-stub.lo -MD -MP -MF .deps/libnetcdf_la-stub.Tpo -c -o libnetcdf_la-stub.lo `test -f 'stub.c' ||echo './'`stub.c 
    libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I../include -DDLL_NETCDF -DDLL_EXPORT -g -O2 -MT libnetcdf_la-stub.lo -MD -MP -MF .deps/libnetcdf_la-stub.Tpo -c stub.c -DDLL_EXPORT -DPIC -o .libs/libnetcdf_la-stub.o 
    libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I../include -DDLL_NETCDF -DDLL_EXPORT -g -O2 -MT libnetcdf_la-stub.lo -MD -MP -MF .deps/libnetcdf_la-stub.Tpo -c stub.c -o libnetcdf_la-stub.o >/dev/null 2>&1 
    mv -f .deps/libnetcdf_la-stub.Tpo .deps/libnetcdf_la-stub.Plo 
    /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -version-info 9:0:2 -no-undefined -Wl,--output-def,netcdfdll.def -o libnetcdf.la -rpath /usr/local/lib libnetcdf_la-stub.lo ../libdispatch/libnetcdf2.la ../libdispatch/libdispatch.la ../libsrc/libnetcdf3.la -lm 
    libtool: link: gcc -shared .libs/libnetcdf_la-stub.o -Wl,--whole-archive ../libdispatch/.libs/libnetcdf2.a ../libdispatch/.libs/libdispatch.a ../libsrc/.libs/libnetcdf3.a -Wl,--no-whole-archive -O2 -Wl,--output-def -Wl,netcdfdll.def -o .libs/libnetcdf-7.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libnetcdf.dll.a 
    Creating library file: .libs/libnetcdf.dll.a 
    libtool: link: (cd .libs/libnetcdf.lax/libnetcdf2.a && ar x "/c/Users/ylylyl/Documents/CB/NETCDF/netcdf-4.2.1.1/liblib/../libdispatch/.libs/libnetcdf2.a") 
    libtool: link: object name conflicts in archive: .libs/libnetcdf.lax/libnetcdf2.a//c/Users/ylylyl/Documents/CB/NETCDF/netcdf-4.2.1.1/liblib/../libdispatch/.libs/libnetcdf2.a 
    make[2]: *** [libnetcdf.la] Error 1 
    make[2]: Leaving directory `/c/Users/ylylyl/Documents/CB/NETCDF/netcdf-4.2.1.1/liblib' 
    make[1]: *** [all-recursive] Error 1 
    make[1]: Leaving directory `/c/Users/ylylyl/Documents/CB/NETCDF/netcdf-4.2.1.1' 
    make: *** [all] Error 2 

Ich habe keine Ahnung von was ist das Problem in Libtool. Aber ich denke, dass ein Befehl mehr Eingaben benötigt. Und vielleicht stimmt etwas beim Erzeugen des Libtool-Skripts nicht?

Ich suchte online, aber ich kann keine MinGW-Version NetCDF mit Fortran und F90-Schnittstelle finden. Bitte gib mir eine Hand. Danke vielmals.

Antwort

13

Das Problem ist, dass "Windows" Pfad vor msys 'bin in PATH aufgeführt ist. Also, Unix-Dienstprogramme, die gleichen Namen mit Windows' eingebaute Dienstprogramme werden nicht aufgerufen. Windows 'diejenigen stattdessen aufgerufen werden. " (http://forum.world.st/The-old-quot-object-name-conflicts-in-archive-quot-problem-on-Windows-MSYS-MinGW-td3439428.html). Putting Pfad zu msys Binärdateien am Anfang von PATH sollte helfen.

+0

Mein Tag gerettet, danke! Um eine Rückmeldung zu geben: In meinem Fall habe ich den Pfad der Bibliotheken in Windows PATH vergessen, und ich habe die msys sh auf dem normalen cmd ausgeführt. Dann habe ich nun den PATH entfernt und bin wieder zu msys zurückgekommen, mach einfach nochmal, und es ging weiter wo es den Fehler gab. :) Im Prinzip überprüfe die Pfad-Leute. – questioner

+0

Oh flipping A. Das behob das Problem. – NiteRain

+0

Ich stieß auf dasselbe Problem unter Cygwin. Das Neuordnen der PATH-Einträge hat es behoben. – aroth