J'ai gfortran installé sur mon système et le fichier libgfortran.a
peut être trouvé au /usr/lib/gcc/x86_64-linux-gnu/4.6/
. En utilisant nm
je me suis assuré que la fonction _gfortran_compare_string
est définie là:Impossible de lier à libgfortran.a
$ nm /usr/lib/gcc/x86_64-linux-gnu/4.6/libgfortran.a | grep _gfortran_compare_string
Retours
0000000000000000 T _gfortran_compare_string
0000000000000000 T _gfortran_compare_string_char4
Mais, l'éditeur de liens de mon programme CUDA C renvoie des erreurs:
/usr/local/cuda-6.0/bin/nvcc --cudart static -L/usr/lib/gcc/x86_64-linux-gnu/4.6 -L/home/chung/lapack-3.5.0 -link -o "pQP" ./src/pQP.o -lgfortran -llapacke -llapack -lcublas -lblas -lcurand
nvcc warning : The 'compute_10' and 'sm_10' architectures are deprecated, and may be removed in a future release.
/home/chung/lapack-3.5.0/liblapack.a(ilaenv.o): In function `ilaenv_':
ilaenv.f:(.text+0x81): undefined reference to `_gfortran_compare_string'
et plus tard une autre erreur, encore une fois liée à libgfortran:
/home/chung/lapack-3.5.0/liblapack.a(xerbla.o): In function `xerbla_':
xerbla.f:(.text+0x49): undefined reference to `_gfortran_st_write'
xerbla.f:(.text+0x54): undefined reference to `_gfortran_string_len_trim'
xerbla.f:(.text+0x66): undefined reference to `_gfortran_transfer_character_write'
xerbla.f:(.text+0x76): undefined reference to `_gfortran_transfer_integer_write'
xerbla.f:(.text+0x7e): undefined reference to `_gfortran_st_write_done'
xerbla.f:(.text+0x87): undefined reference to `_gfortran_stop_string'
Mais, encore en utilisant nm, j'ai trouvé que _gfortran_st_write
, etc sont définis dans libgfortran.a.
Liens: Complete log et source code.
Remarque: Lapack utilise libgfortran. J'ai récemment installé lapack et j'ai fait tous les tests et ils sont tous passés.
Incroyable! Merci un million! Je serai éternellement redevable! –