Linkerfehler: Fehlende Symbole zur Laufzeit, keine Probleme zur Compilezeit
- 
					
					
					
					
 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 applicationmain.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 abDie 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.soFü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?