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

编译自定义函数库报错



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


但是我们的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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值