【发布时间】:2014-02-07 17:39:36
【问题描述】:
我正在开发一个 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版本?如果你能解决这个问题,你的问题可能就不存在了。 -
在某些情况下,我可能想让
lib1使用lib2的新版本,但仍然让prog1使用旧版本,以避免(或推迟)更改它。但是使用相同的版本当然是最简单的解决方案。
标签: linker dependencies fortran static-libraries