2012-08-21 25 views
5

Voy a utilizar NetCDF en Windows y creo que tiene que compilarse con MinGW ya que mi programa principal y todas las demás bibliotecas ya están compiladas con MinGW.libtool: conflictos de nombre de objeto en el archivo (NETCDF + MinGW)

Pero cuando utilicé MinGW (gcc versión 4.6.2). Recibí algunos mensajes de error:

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 

No tengo idea de cuál es el problema dentro de libtool. Pero creo que un comando necesita más entradas. Y tal vez hay algo mal al generar el script libtool?

He buscado en línea, pero no puedo encontrar ninguna versión MinGW NetCDF con interfaz fortran y f90. Por favor, échame una mano. Muchas gracias.

Respuesta

13

El problema es que "la ruta de Windows aparece antes de la bandeja de msys en RUTA. Por lo tanto, las utilidades de Unix que tienen el mismo nombre con las utilidades incorporadas de Windows no recibirán llamadas. (http://forum.world.st/The-old-quot-object-name-conflicts-in-archive-quot-problem-on-Windows-MSYS-MinGW-td3439428.html). Poner la ruta a los binarios de msys al comienzo de PATH debería ayudar.

+0

¡Me salvó el día, gracias! Para hacer un comentario: en mi caso olvidé la ruta de las bibliotecas en Windows PATH, y estaba ejecutando el msys sh en el cmd normal. Luego, ahora eliminé la RUTA y volví a msys, simplemente volví a hacer, y continuó donde dio el error. :) Básicamente revisa el camino chicos. – questioner

+0

Oh cambiando A. Esto solucionó el problema. – NiteRain

+0

Encontré este mismo problema bajo cygwin. Reordenar las entradas PATH lo arregló. – aroth

Cuestiones relacionadas