AIX环境informix的esql与xlc混合编译对齐问题

最近在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,重新编译连接,解决了这个问题。