近日在AIX6.1上需要编译64位的python,并且支持cx_Oracle。在编译python时比较顺利,但在编译到cx_Oracle时,报告一下错误:
ld: 0711-317 ERROR: Undefined symbol: .OCIPing
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
在网上搜索,无果。无奈之下翻看setup.py,发现:
...
if sys.platform == "aix4":
extraCompileArgs.append("-qcpluscmt")
elif sys.platform == "aix5":
extraCompileArgs.append("-DAIX5")
elif sys.platform == "cygwin":
...
在这段代码里没有对aix6的处理,那也就是说在编译时可能少了必要的编译参数。
考虑AIX5和AIX6相近,虽修改上面的代码为:
if sys.platform == "aix4":
extraCompileArgs.append("-qcpluscmt")
elif sys.platform == "aix6":
extraCompileArgs.append("-DAIX5")
elif sys.platform == "cygwin":
重新编译,OK!问题搞定。