Ich entwickle ein Fortran-Programm prog1
und zwei Fortran-Bibliotheken, lib1
und lib2
. prog1
hängt von lib1
und lib2
ab, und lib1
hängt auch von lib2
ab. Die Verzeichnisstruktur könnte wie folgt aussehen:Verknüpfung von statischen Fortran-Bibliotheken mit Abhängigkeiten
prog1
|- lib2
|- lib1
|- lib2
In einigen Fällen würde ich prog1
gerne eine andere Version von lib2
als das, was lib1
Anwendungen zu verwenden. Wenn jedoch die statische Bibliothek lib1.a
die Objektdateien von lib2
enthält, der Linker mir Fehler wie
./lib1/lib1.a(lib2_module.o): In function `__lib2_module_MOD_function1':
./lib2/src/lib2_module.f90:12: multiple definition of `__lib2_module_MOD_function1'
./lib2/lib2.a(lib2_module.o):./lib2/src/lib2_module.f90:12: first defined here
Mit anderen Worten gibt, wird der Linker verwechselt, da beide Bibliotheken die gleiche Objektdatei lib2_module.o
, aber mit unterschiedlichen Versionen enthalten.
Also meine Frage ist: Wie können zwei Fortran-Bibliotheken verschiedene Versionen der gleichen Objektdateien enthalten (und verwenden)?
keine Antwort, aber warum sollte 'prog1' von einer anderen' lib1' Version abhängig sein? Wenn Sie das umgehen können, ist Ihr Problem möglicherweise nicht vorhanden. – steabert
In einigen Fällen möchte ich "lib1" die neue Version von 'lib2' verwenden lassen, aber' prog1' die alte Version verwenden lassen, um sie zu ändern (oder zu verschieben). Aber die Verwendung derselben Version wäre natürlich die einfachste Lösung. – halvorlu