Pregunta

He intentado compilar el siguiente código Fortran que se encuentra en http://techlogbook.wordpress.com/200...-kubuntu- 8-04 /

program testplplot2d
use plplot
implicit none
real(plflt),dimension(6) :: x,y
real(plflt)::xmin,xmax,ymin,ymax
x=(/1,2,3,4,5,6/)
y=x**2
write(*,*) y
call plinit()
xmin=1.0
xmax=6.0
ymin=1.0
ymax=40.0
call plcol0(1)
call plenv(xmin,xmax,ymin,ymax,0,0)
call pllab('X','Y','Test 1D plot')
call plpoin(x,y,9)
call plline(x,y)
y=x**3
call plpoin(x,y,9)
call plline(x,y)
call plend()

end program testplplot2d

utiliza el comando siguiente en mi intento de compilar el programa:

gfortran -I/usr/lib/fortran/modules/plplot testplot2d.f90 -o testplot2d

Sin embargo he recibido el mensaje de un error de la vinculación se detalla a continuación:

/tmp/cckSqEg4.o: In function `MAIN__':
testplot2d.f90:(.text+0x10c): undefined reference to `plinit_'
testplot2d.f90:(.text+0x154): undefined reference to `plcol0_'
testplot2d.f90:(.text+0x181): undefined reference to `plenv_'
testplot2d.f90:(.text+0x1a6): undefined reference to `__plplotp_MOD_pllab'
testplot2d.f90:(.text+0x248): undefined reference to `__plplot_MOD_plpoin'
testplot2d.f90:(.text+0x2e5): undefined reference to `__plplot_MOD_plline'
testplot2d.f90:(.text+0x3c6): undefined reference to `__plplot_MOD_plpoin'
testplot2d.f90:(.text+0x463): undefined reference to `__plplot_MOD_plline'
testplot2d.f90:(.text+0x46d): undefined reference to `plend_'
collect2: ld returned 1 exit status

¿Qué debo hacer para corregir este problema? (He leído las páginas man para gfortran, y creo que estoy usando la opción correcta para el ligado con una biblioteca.)

¿Fue útil?

Solución 2

Me ha publicado esto en los ubuntuforums también. Usuario gmargo publicado la siguiente solución:

Instalar el paquete libplplot-dev y luego compilar con esta línea de comandos:

gfortran testplot2d.f90 -o testplot2d $(pkg-config --cflags --libs plplotd-f95)

Gracias @belisarius y @ de alto rendimiento-Mark para sus esfuerzos.

Otros consejos

Los mensajes de error que nos muestran son generados por el enlazador, no el compilador. No sé gfortran así que lo que sigue puede ser lejos de la realidad

-I general (en los compiladores de Linux y Unix que conozco) identifica un directorio que contiene los archivos que se incluirán en la compilación, en lugar de al vincular. Para Fortran los archivos .mod creado al compilar un módulo tienen que ser incluidas durante la compilación.

Desde que no está recibiendo mensajes de error que indica que el módulo que USE no se encuentra, se puede trabajar sobre la base de que está siendo encuentra donde se indica al compilador a la mirada.

El Linux compiladores estoy familiarizado con el uso de la bandera -L, un directorio, y una forma abreviada del nombre de la biblioteca para identificar las bibliotecas para ser enlazados. En su caso lo que habría esperado ver algo como:

-L/path/to/installed/lib/files -lplplot

incluido en su declaración de compilación. ¿Cómo le dices a gfortran que incluya la biblioteca en tiempo de enlace no sé, pero no se ve nada en su estado de compilación que hace gfortran dicen lo que las bibliotecas de enlace.

Has falta referencias externas.

La página de dónde quedó inicia el código :

He instalado libplplot del gestor de paquetes Adept Kubuntu, y eligió el paquete “libplplot-fortran9".

Creo que se debería hacer lo mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top