【发布时间】:2023-04-01 20:20:02
【问题描述】:
我有两个第 3 方库 A.so 和 B.so,我将与我的可执行文件 executable.exe 链接在一起。 A.so 包含一个 B.so 解决的错误,也就是说:
-
A::subroutine1()在调用时可能会因浮点异常而崩溃(FP 算术错误) -
B::subroutine1()是一个固定的实现,应该始终调用而不是A::subroutine1()。
A 和 B 的正确链接顺序是什么?我现在做的是:
ifort <....> executable.exe <...> -lA -lB
我仍然不时收到浮点异常(该错误无法准确重现,因此很难调试)。但是,当它崩溃时,程序让我知道 A::subroutine1() 是违规者 - 因此 subroutine1() 的错误版本由于某种原因被链接。
我将把链接顺序作为第一个 stab 进行翻转,但是有没有一种工具可以用来检查 executable.exe 以查看运行时将调用哪个版本的 subroutine1()?
谢谢!
【问题讨论】:
标签: linker shared-libraries intel-fortran