从事银行核心系统设计开发的程序猿
分类: AIX
2017-08-26 12:12:05
最近在AIX环境下,使用esql编译ec/ecpp形成的.o和xlc/xlC编译普通c/cpp形成的.o进行连接,运行时发现不同.o调用传递struct结构参数访问会有错位。
排除了程序本身的原因,最后发现是AIX下esql和xlc编译时默认结构对齐编译参数设置是不同的。
esql编译时,可以用esql -v查看,发现-qalign=nature,而根据xlc帮助,默认-qalign=power,两者是不同的。
由于esql编译形成的.o在其他项目已经在使用,因此修改了c/cpp的makefile,加上参数-qalign=nature,重新编译连接,解决了这个问题。