You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AIX 7.3下程序运行时缺失符号定义问题求助

1. 验证目标符号是否存在于libotds.1.so中

使用AIX自带的nm命令检查符号状态:

nm -D libotds.1.so | grep -E "_ZN10OTDSConfig11GetInstanceEv|_ZN10OTDSConfig13IsOTDSEnabledEv"
  • 若输出为空:说明符号未被编译进库或未导出,需处理符号导出配置
  • 若有输出:说明符号存在,需检查库依赖路径或链接逻辑

2. 修正libotds.1.so的符号导出规则

编译libotds.1.so时使用了-Wl,-bE:libotds.1.exp选项,该选项会仅导出libotds.1.exp文件中列出的符号:

  • 打开libotds.1.exp文件,确认是否包含以下两行:
    _ZN10OTDSConfig11GetInstanceEv
    _ZN10OTDSConfig13IsOTDSEnabledEv
    
  • 若缺失,添加后重新编译libotds.1.so:
    g++ -maix64 -shared -o libotds.1.so `cat libotds.1.lst` -Wl,-b64 -Wl,-G -Wl,-bnoentry -Wl,-bnolibpath -Wl,-bnoipath -Wl,-bexpall -Wl,-bE:libotds.1.exp -L/eng/otbuild/aix73/os/master/exports/lib -lcurl -lC -lc_r
    
  • 若不想维护导出列表,可移除-Wl,-bE:libotds.1.exp选项,仅保留-Wl,-bexpall让所有全局符号自动导出

3. 调整libauthzss.2.so的链接顺序

AIX链接器对库的顺序敏感,依赖库必须放在引用它的目标文件之后:

  • 修改libauthzss.2.so的编译命令,将-lotds.1移到libauthzss.2.lst之后:
    g++ -maix64 -shared -o libauthzss.2.so `cat libauthzss.2.lst` -Wl,-brtl -L/eng/otbuild/aix73/os/master/exports/lib -Wl,-b64 -Wl,-G -Wl,-bnoentry -Wl,-bnolibpath -Wl,-bnoipath -Wl,-bexpall -Wl,-bE:libauthzss.2.exp -L/eng/otbuild/aix73/os/master/exports/lib -lotds.1 -llicense -lc_r
    

4. 补全OTDSConfig类的静态成员定义

查看OTDSConfig.cpp,确认是否存在静态成员_otdsConfig的定义:

OTDSConfig* OTDSConfig::_otdsConfig = nullptr;

若缺失该定义,会导致符号生成不完整,添加后重新编译libotds.1.so

5. 确认库依赖路径有效性

使用ldd命令检查libauthzss.2.so能否正确找到libotds.1.so:

ldd libauthzss.2.so
  • 若路径异常,可在编译libauthzss.2.so时显式指定库路径:
    g++ -maix64 -shared -o libauthzss.2.so `cat libauthzss.2.lst` -Wl,-brtl -L/eng/otbuild/aix73/os/master/exports/lib -Wl,-b64 -Wl,-G -Wl,-bnoentry -Wl,-bnolibpath -Wl,-bnoipath -Wl,-bexpall -Wl,-bE:libauthzss.2.exp -Wl,-blibpath:/home/rahul/install/otos/lib -L/eng/otbuild/aix73/os/master/exports/lib -lotds.1 -llicense -lc_r
    

内容的提问来源于stack exchange,提问作者Rahul Sabnis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:05:19