gpt4 book ai didi

无法加载模块 libdb2.a(shr.o)

转载 作者:行者123 更新时间:2023-11-30 15:30:40 26 4
gpt4 key购买 nike

我有一个依赖于 libdb2.a 的 C 可执行文件。然而,当调用可执行文件时,弹出以下错误:

exec(): 0509-036 Cannot load program /my/path/my_c_exe because of the following errors:
0509-150 Dependent module libdb2.a(shr.o) could not be loaded.
0509-022 Cannot load module libdb2.a(shr.o).
0509-026 System error: A file or directory in the path name does not exist.

后来发现我应该在我的主目录下的文件 .profile 中添加以下环境设置:

LIBPATH=/db2/v84bc/sqllib/lib64
export LIBPATH

是的,问题已解决。但我仍然对最初的错误感到困惑,因为静态库 libdb2.a 应该在编译时构建到 c 可执行文件 /my/path/my_c_exe 中。可执行文件不应该在运行时寻找它所依赖的静态库,不是吗?如果 db2 是共享对象,我就能明白其中的原理。但对于静态库,该错误超出了我的理解范围。

有关此错误原因的任何提示吗?或者,虽然libdb2.a被命名为静态库,但它实际上是一个共享对象?除了查看后缀(.a 或 .so)之外,如何确定一个库是静态库还是共享对象?

最佳答案

您关于表示静态库的后缀 .a 的假设是不正确的。按照约定,.a 是共享库的后缀,它可以包含共享和静态对象,两者都有后缀.o。对象是共享的还是静态的在其 XCOFF header 中指示。

更多信息in the manual .

关于无法加载模块 libdb2.a(shr.o),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25509673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com