我正在尝试在Linux上编译Pro * C lib。我的make中有以下代码。
etc=$TABS_HOME/admin
export etc
if [ -f ${1}.pc ]
then
rm $1_x.o
compc $1
make -f $etc/proc64.mk $1_x.o
ar -cvq libtabs.a $1_x.o
else
make -f $etc/proc64.mk $1.o
ar -cvq libtabs.a $1.o
fi
这是编译开始时打印的最终命令:
/usr/bin/gcc -g -m64 -g -I/export/home/cl10gr2/oracle/rdbms/public -I/home/med/src/common -I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/demo -
I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/public -
I/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public -ltabs.a -lnapi.a -c commonutil_x.c
我收到警告/错误:
gcc: -ltabs.a: linker input file unused because linking not done
gcc: -lnapi.a: linker input file unused because linking not done
有什么可以帮我解释为什么它没有链接lib文件?
答案 0 :(得分:3)
它没有链接它们,因为你没有链接。您正在传递-c
选项:
-c编译或汇编源文件,但不要链接。链接阶段根本没有完成。最终输出是每个源文件的目标文件形式。
如果要构建中间目标文件,则在最后之前不需要这些库。在最后阶段包含您需要的所有目标文件和库,并将它们全部链接在一起。