Я разрабатываю программу Fortran prog1 и две библиотеки Fortran, lib1 и lib2. prog1 зависит от lib1 и lib2, а lib1 также зависит от lib2. Структура каталогов может выглядеть так:
prog1
|- lib2
|- lib1
|- lib2
В некоторых случаях мне бы хотелось prog1 использовать другую версию lib2, отличную от той, которую использует lib1. Однако, если статическая библиотека lib1.a включает объектные файлы из lib2, компоновщик выдает мне такие ошибки, как
./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
Другими словами, компоновщик сбивается с толку, поскольку обе библиотеки содержат один и тот же объектный файл lib2_module.o, но с разными версиями.
Итак, мой вопрос: как две библиотеки Fortran могут содержать (и использовать) разные версии одних и тех же объектных файлов?
prog1зависеть от другойlib1версии? Если вы можете обойти это, ваша проблема может не существовать. - person steabert   schedule 08.02.2014lib1использовать новую версиюlib2, но все же разрешитьprog1использовать старую версию, чтобы избежать (или отложить) ее изменение. Но использование той же версии, конечно, было бы самым простым решением. - person halvorlu   schedule 09.02.2014