前几天将一个LINUX项目移植到AIX,按步就班,修改makefile编译通过,运行core dump,用dbx跟踪发现,主程序定义并初始化的全局变量,在动态库中值全变为0,主程序与动态库不能共享全局变量,初步判断可能是编译选项的问题,埋头狂查资料,发现在AIX必须加runtime link选项,尝试使用-G选项,问题解决。-G选项等价于下列选项的组合:-brtl runtime link选项,运行时链接符号、-berok 跳过符号未定义的错误、-bsymbolic、-bnoautoexp、-bM:SRE
因为这个项目基于ACE平台,ACE里使用了许多全局变量,而使用configure产生的makefile来编译没有此选项,修改加上-G选项,重新编译后问题彻底解决。