编译自定义函数库报错
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)
解决AIX5.2环境下Makefile编译错误问题
本文解决在AIX5.2系统中使用xlc编译器,链接oracle10g、tuxedo8.1及自定义函数库时,因命令行参数过长导致的ar命令无法正确执行的问题。通过修改Makefile文件结构,将.o文件分批打包,避免了参数过长的问题,并验证了打包文件的正确性。

被折叠的 条评论
为什么被折叠?



