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

  

  最近在AIX环境下,使用esql编译ec/ecpp形成的. o和xlc/xlc编译普通c/cpp形成的. o进行连接,运行时发现不同. o调用传递struct结构参数访问会有错位。   

  

  排除了程序本身的原因,最后发现是AIX下esql和xlc编译时默认结构对齐编译参数设置是不同的。   

  

  esql编译时,可以用esql - v查看,发现-qalign=自然,而根据xlc帮助,默认-qalign=权力,两者是不同的。   

  

  由于esql编译形成的. o在其他项目已经在使用,因此修改了c/cpp的makefile,加上参数-qalign=自然,重新编译连接,解决了这个问题。   

  

  
  

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