当前位置: 技术问答>linux和unix
gcc静态链接的疑问
来源: 互联网 发布时间:2016-05-08
本文导语: 在/usr/lib/下有libtest.a静态库,那么在链接时参数-static -lc和把/usr/lib/libtest.a当作和.o文件一样的加在链接源中是不是有同样的效果? | 效果是一样的, 静态链接是需要注意的是链接库的顺序,...
在/usr/lib/下有libtest.a静态库,那么在链接时参数-static -lc和把/usr/lib/libtest.a当作和.o文件一样的加在链接源中是不是有同样的效果?
|
效果是一样的, 静态链接是需要注意的是链接库的顺序, 被调用的库要放在后面.
比如下面的简单例子:
比如下面的简单例子:
$ cat ld_static.c
#include
int
main(void)
{
double x, y;
x = 4.0;
y = sqrt(x);
return (0);
}
$ cc -static ld_static.o -o ld_static -lm
$ cc -static ld_static.o -lm -o ld_static
$ cc -static -lm ld_static.o -o ld_static
ld_static.o: In function `main':
ld_static.c:(.text+0x3c): undefined reference to `sqrt'
collect2: ld returned 1 exit status
$ cc -static ld_static.o -o ld_static /usr/lib64/libm.a
$ cc -static ld_static.o /usr/lib64/libm.a -o ld_static
$ cc -static /usr/lib64/libm.a ld_static.o -o ld_static
ld_static.o: In function `main':
ld_static.c:(.text+0x3c): undefined reference to `sqrt'
collect2: ld returned 1 exit status