AIX平台下使用xercesc第三方库时xalanc依赖库预构建失败求助
AIX平台构建Xalan-C依赖Xerces-C时IOT/Abort陷阱的解决思路
错误日志
../../../../obj/SAX2Handler.o -o ../../../../bin/MsgCreator -L/BR4/ism_7.4.0.2/Devarapalli.Lavanya_p02724/mtpt1/TOP/aix/thirdparty/xalanc/xalan-c-1.11/xercesc/lib -lxerces-c ../../../bin/MsgCreator /BR4/ism_7.4.0.2/Devarapalli.Lavanya_p02724/mtpt1/TOP/aix/thirdparty/xalanc/xalan-c-1.11/c/src/xalanc/NLS/en_US/XalanMsg_en_US.xlf -TYPE inmem -LOCALE en_US gmake[4]: *** [../../../nls/include/LocalMsgData.hpp] IOT/Abort trap (core dumped) gmake[3]: *** [locale] Error 2 gmake[2]: *** [all] Error 2 gmake[1]: *** [/BR4/ism_7.4.0.2/Devarapalli.Lavanya_p02724/mtpt1/TOP/aix/thirdparty/xalanc/xalan-c-1.11/c/lib/libxalan-c.a] Error 2 gmake: *** [createsdk] Error 1
排查与解决方案
- 校验版本兼容性:Xalan-C 1.11需搭配官方推荐的Xerces-C 3.1.x版本(如3.1.4),AIX平台上跨版本的Xerces-C二进制文件极易出现兼容性问题,尤其是线程模型、编译架构的差异。
- 统一编译选项:确保Xerces-C与Xalan-C使用完全一致的编译参数:
- 强制64位编译:添加
-q64选项 - 统一线程模型:使用
-pthread或AIX原生线程编译参数 - 对齐优化级别:避免一方用
-O3另一方用-O0这类差异
- 强制64位编译:添加
- 分析Core Dump定位崩溃点:用AIX自带的
dbx工具分析core文件:
执行dbx ../../../bin/MsgCreator corewhere命令查看调用栈,确认是XML解析初始化失败、内存越界还是本地化文件编码问题。 - 调整本地化生成模式:将MsgCreator的
-TYPE inmem参数改为-TYPE file,绕开内存加载模式可能引发的内存分配问题。 - 检查系统依赖库:确认AIX系统已安装
libpthread.a、libiconv.a等基础依赖,同时检查LANG、LC_ALL环境变量是否设置为en_US,避免编码冲突。 - 重新编译依赖库:若使用预编译Xerces-C库,建议从源码重新编译,指定与Xalan-C一致的编译选项:
完成后重新触发Xalan-C的构建流程,确保链接到新编译的Xerces-C库。# Xerces-C编译示例(AIX) ./configure --prefix=/your/xerces/install/path --enable-64bit --disable-shared make && make install
内容的提问来源于stack exchange,提问作者lavanya
相关产品推荐
相关产品推荐

