我编写了一个FORTRAN库“B”,根据调用它的方式,它可以调用或不调用另一个库“C”中的例程。意图是“B”用于应用程序“A”。
到目前为止,B和C被编译为静态库(.a文件)。 这意味着C.a必须可用并在编译B.a时链接到,这没关系。 这也意味着在编译应用程序A时Ca必须可用,即使A无意使用依赖于C的B中的功能。这很烦人且似乎没必要,因为必须将Ca分发给永远不会使用的用户它。
理想情况下,我希望将C作为动态/共享库,并在B中执行一些运行时可用性检查(伪代码):
if (requested feature from C)
if (is_available(libC.so))
call routine_from_C()
(Go on...)
else
call Error("You need to install C")
else
(We don't need C. Go on...)
Linux上的FORTRAN是否可以这样?