2012-08-21 16 views
5

Ho intenzione di usare NetCDF in Windows e penso che debba essere compilato con MinGW poiché il mio programma principale e tutte le altre librerie sono già compilate con MinGW.libtool: conflitti di nome oggetto nell'archivio (NETCDF + MinGW)

Ma quando ho usato MinGW (gcc versione 4.6.2). Ho ricevuto alcuni messaggi di errore:

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 

Non ho idea di quale sia il problema all'interno di libtool. Ma penso che il comando ar abbia bisogno di più input. E forse c'è qualcosa di sbagliato quando si genera lo script libtool?

Ho cercato online ma non riesco a trovare nessuna versione MinGW NetCDF con interfaccia fortran e f90. Per favore dammi una mano. Grazie molto.

risposta

13

Il problema è che il percorso di "Windows" è elencato prima del cestino di msys in PATH. Quindi, le utility unix che hanno lo stesso nome con le utility incorporate di Windows non verranno chiamate. (http://forum.world.st/The-old-quot-object-name-conflicts-in-archive-quot-problem-on-Windows-MSYS-MinGW-td3439428.html). Inserire il percorso dei file binari di msys all'inizio del PERCORSO dovrebbe aiutare.

+0

Salvato la mia giornata, grazie! Per dare un feedback: nel mio caso ho dimenticato il percorso delle librerie in Windows PATH, e stavo eseguendo il msys sh sul normale cmd. Quindi ora ho rimosso il PERCORSO e sono tornato a msys, basta rifarlo, e ha continuato dove ha dato l'errore. :) Fondamentalmente doppio controllo dei ragazzi di Path. – questioner

+0

Oh sfogliare A. Questo risolve il problema. – NiteRain

+0

Ho riscontrato questo stesso problema in Cygwin. Il riordino delle voci PATH lo ha risolto. – aroth