?
						
					
					
						
					
				
				
					Hallo zusammen,
Folgende Problemstellung: Ich habe ein Paket mit mehreren Fortranbibliotheken mit gfortran compiliert und möchte sie nun linken. Alle Sources sind compiliert und müssen noch zusammengelinkt werden.
Der Linkeraufruf (s.u.) funktioniert einwandfrei.
Zur Laufzeit erhalte ich den Fehler "symbol lookup error: /home/pm/out/Linux-i686/optimized/libsnopt.so: undefined symbol: s1time_"
Dafür benutze ich folgenden Aufruf:
g++ main.o f77files.o -L/home/pm/out/Linux-i686/optimized -Wl,--start-group -lblas -ldbl -lopt -lnopt -lsnopt -Wl,--end-group -lgfortran -Wl,-rpath /home/pm/out/Linux-i686/optimized -o application
main.o hängt direkt nur von "libsnopt.so" ab. libsnopt.so hängt dann wiederum von den anderen Bibliotheken ab.
libsnopt.so hängt von libnopt.so, libopt.so ab.
libnopt.so hängt von libopt.so, libdbl.so, libblas.so ab
libopt.so hängt von libdbl.so, libblas.so ab
libblas.so hängt von libdbl.so ab
libdbl.so hängt nicht von den anderen Bibliotheken ab
Die Bibliotheken blas,dbl,opt,nopt,snopt liegen im Verzeichnis "/home/pm/out/Linux-i686/optimized" als
libsnopt.so
libnopt.so
libopt.so
libdbl.so
libblas.so
Führe ich ldd -r application aus, erhalte ich folgende Ausgabe
linux-gate.so.1 =>  (0xb7785000)
	libsnopt.so => /home/pm/out/Linux-i686/optimized/libsnopt.so (0xb777d000)
	libgfortran.so.3 => /usr/lib/i386-linux-gnu/libgfortran.so.3 (0xb7668000)
	libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb757e000)
	libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7560000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb73b6000)
	libquadmath.so.0 => /usr/lib/i386-linux-gnu/libquadmath.so.0 (0xb733e000)
	libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7312000)
	/lib/ld-linux.so.2 (0xb7786000)
undefined symbol: s1time_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: dcopy_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: ddscl_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s8sclg_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: dddiv_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s8sclj_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s1file_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s8dflt_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s8mem_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s8solv_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s1init_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s3undf_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s3opt_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
undefined symbol: s3file_	(/home/pm/out/Linux-i686/optimized/libsnopt.so)
"s1time_" ist z.B. in libopt.so definiert. Es liegt also in irgendeiner Form daran, dass die Bibliotheken libnopt.so, libopt.so, libdbl.so, libblas.so nicht als Shared-Libraries zum Executable hinzugefügt werden, obwohl Abhängigkeiten zu ihnen bestehen.
Hat jemand von euch eine Idee, wie man das erreicht?