参数过长,导致编译自定义函数库报错

阅读更多

编译自定义函数库报错



ar: not found

make: The error code from the last command is 1.


环境:

AIX 5.2
xlc
oracle10g
tuxedo8.1

检查发现是编译时
执行 make

在链接对象的时候命令行参数过长

ar -X64 rcu libdb_ia.a  DB_CommEmpWeb.o DB_LifeUserAttr.o  DB_InfoNetCardSale.o DB_LogInfoNetCardSale.o … #LONG ARGS


查看系统参数上限

$ getconf ARG_MAX
24576

also see  http://www.in-ulm.de/%7Emascheck/various/argmax/

但是我们的Makefile文件 不带空格都已经23539 个字符了,导致系统无法成功调用 ar命令

$ wc -c Makefile
   23539 Makefile



修改Makfe的思路,不再把所有 .o 文件写在 一个命令中,修改为, 逐行写入一个.o 文件名 至 OBJ_LIST文件,然后读取此文件,逐个打包

同时,Makefile 文件 改为


$(LIB_FILE) :
        cat OBJ_LIST|while read line; do ar  -X64 rcu $(LIB_FILE) $$line; done


编译完后检查有没有正确的打包文件

ar -vt $(LIB_FILE)

你可能感兴趣的:(aix)