我正在开发一个Fortran程序prog1
和两个Fortran库,lib1
和lib2
。 prog1
依赖于lib1
和lib2
,而lib1
也依赖于lib2
。 目录结构可能如下所示:
prog1
|- lib2
|- lib1
|- lib2
在某些情况下,我希望
prog1
使用与lib1
不同的lib2
版本。然而,如果静态库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
版本呢?如果您可以解决这个问题,那么您的问题可能就不存在了。 - steabertlib1
使用新版本的lib2
,但仍然让prog1
使用旧版本,以避免(或推迟)更改。但是,使用相同的版本当然是最简单的解决方案。 - halvorlu