GCC库链接问题

时间:2011-03-31 15:40:37

标签: gcc linker compilation

我正在尝试在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文件?

1 个答案:

答案 0 :(得分:3)

它没有链接它们,因为你没有链接。您正在传递-c选项:

  

-c编译或汇编源文件,但不要链接。链接阶段根本没有完成。最终输出是每个源文件的目标文件形式。

如果要构建中间目标文件,则在最后之前不需要这些库。在最后阶段包含您需要的所有目标文件和库,并将它们全部链接在一起。