Hola, estoy intentando compilar en ubuntu pero sobre arm-linux uno de los ejemplos de HDF5 y me da un error:
compilo con: arm-linux-gnueabihf-g++ create.cpp -I -lhdf5_serial -lhdf5_cpp -o PRUEBA
y me da el siguiente error:
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: no se puede encontrar -lhdf5_cpp
collect2: error: ld returned 1 exit status
Alguien podría ayudarme? Muchas gracias
Existe un archivo llamado "hdf5_cpp" o "libhdf5_cpp.o" o algo de este estilo en la carpeta en la que estás compilando? Quizás en otra carpeta?
existe archivos HDF5.h , libhdf5_cpp y libhdf5_serial, pero no los que me comentas
Bien, "libhdf5_cpp". Qué extensión tiene?
libhdf5_cpp.so
Si está en la misma ruta que los otros archivos, no debería dar problema.
Por cierto, por qué ese "-I"?
Está en la misma ruta y da problemas. Si quita el -I me da el siguiente los siguientes errores:
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: no se puede encontrar -lhdf5_serial
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: no se puede encontrar -lhdf5_cpp
collect2: error: ld returned 1 exit status
Gracias
El -I espera después una ruta en la cual buscar archivos para los includes. Si no tienes una ruta que agregarle, quítalo. Te quita el error porque interpreta "-l..." como la ruta, cosa que no está bien.
El error real es el último que pusiste, no encuentra ninguno de los 2 archivos.
Haz una prueba. Pon "-L ruta_de_los_archivos". -L es como -I, para poner la ruta, pero -L es para los archivos para el linking (que es lo que está tirando este error)
He metido _L con la ruta de los archivos:
arm-linux-gnueabihf-g++ create.cpp -L/usr/arm-linux-gnueabihf/include -llibhdf5_serial -llibhdf5_cpp -o PRUEBA
y me sigue dando el mismo error:
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: no se puede encontrar -llibhdf5_serial
/usr/lib/gcc-cross/arm-linux-gnueabihf/5/../../../../arm-linux-gnueabihf/bin/ld: no se puede encontrar -llibhdf5_cpp
collect2: error: ld returned 1 exit status
Puesta la ruta, prueba a poner: "-llibhdf5_serial" o "-lhdf5_serial" o "-llibhdf5_serial.so"
En priuncipio, debería funcionar con "-lhdf5_serial", sin el lib y sin la extensión, pero vaya
me sigue dando el mismo error en cualquiera de los casos.
Puede ser un problema de las librerías?
Muchas gracias
Ese error lo da cuando no encuentra el archivo.
Lo que te puedo decir, es que pruebes a mover los .so a varios lugares. Este error es algo molesto. Además, yo no utilizo Linux, así que no tengo información mucho más detallada del tema.
Por cierto, estoy leyendo ahora que pusiste: "-L/usr/arm-linux-gnueabihf/include". ¿Include? Los .so suelen estar en una carpeta llamada lib. En include suelen estar los headers. Asegúrate de que la ruta es la correcta en la que están los .so.
He probado todas las posibilidades y no me funciona. podrías explicarme paso a paso como hacer la compilación cruzada de un programa con HDF5 en arm-linux desde ubuntu? Muchas gracias
En primer lugar, estás seguro de que los .so están en "/usr/arm-linux-gnueabihf/include"?
Dicho esto, no voy a tener mucha más información. Yo no trabajo con Linux.