当前位置:  技术问答>linux和unix

用两种方式链接静态库的疑问!!

    来源: 互联网  发布时间:2016-03-15

    本文导语:  麻烦大家帮我看下...先谢过! [xinshuow@localhost shared]$ ll 总用量 12 -rwxr-xr-x  1 xinshuow davinci   72  4月 15 11:36 hello.c -rw-r--r--  1 xinshuow davinci 1006  4月 15 11:45 libhello2.a  // 静态库 -rwxr-xr-x  1 xinshuow davinci  ...

麻烦大家帮我看下...先谢过!
[xinshuow@localhost shared]$ ll
总用量 12
-rwxr-xr-x  1 xinshuow davinci   72  4月 15 11:36 hello.c
-rw-r--r--  1 xinshuow davinci 1006  4月 15 11:45 libhello2.a  // 静态库
-rwxr-xr-x  1 xinshuow davinci  468  4月 15 17:23 test.c
[xinshuow@localhost shared]$ gcc -o test_static1 test.c -L. -lhello2     // 第一种方法
[xinshuow@localhost shared]$ gcc -o test_static2 test.c -L. -lhello2 -static   // 第二种方法,多了个参数-static,相对第一种有什么区别??
[xinshuow@localhost shared]$ ll
总用量 444
-rwxr-xr-x  1 xinshuow davinci     72  4月 15 11:36 hello.c
-rw-r--r--  1 xinshuow davinci   1006  4月 15 11:45 libhello2.a
-rwxr-xr-x  1 xinshuow davinci    468  4月 15 17:23 test.c
-rwxr-xr-x  1 xinshuow davinci   4848  4月 16 11:16 test_static1   // 文件大小为4848
-rwxr-xr-x  1 xinshuow davinci 428236  4月 16 11:17 test_static2   // 文件大小为428236,怎么比test_static1大这么多??
[xinshuow@localhost shared]$ ./test_static1
Hello World !
[xinshuow@localhost shared]$ ./test_static2
Hello World !
[xinshuow@localhost shared]$ mv libhello2.a libhello2.a.bak    // 没有libhello2.a也可以运行
[xinshuow@localhost shared]$ ./test_static1
Hello World !
[xinshuow@localhost shared]$ ./test_static2
Hello World !
[xinshuow@localhost shared]$

|
如果系统支持动态连接
-static则阻止这样连接

不然就是没有任何效果

|
区别在于关键是libc的链接.
gcc -o test_static1 test.c -L. -lhello2
链接libc.so或libgcc.so(动态)
==========
gcc -o test_static2 test.c -L. -lhello2 -static
链接libc.a或libgcc.a(静态), 会把libc.a/libgcc.a里的用到的.o的代码放入test_static2文件中,自然test_static2大了很多

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux中都有哪些链接方式,创建链接的命令是什么?
  • textView 添加超链接(两种实现方式)
  • Android实现TextView中文字链接的4种方式介绍及代码
  • Docker支持的安装方式
  • 图形方式到文本方式的切换
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • 有做过基于snmp方式的入侵检测系统的哥们吗?请留下联系方式,以后多交流交流!
  • 设置sharepoint 2010文档库中的 pdf文件在浏览器中访问的打开方式
  • redhat as 3 如何将图形登录方式改为文字登录方式?
  • c++类对象数组初始化方式
  • 请问redhat9.0下怎么在启动的时候直接进入命令行方式而不是xwindows方式??谢谢
  • Linux/centos/redhat下各种压缩解压缩方式详解
  • 怎么使linux启动重原来的图形方式切换到命令行方式?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • Red Hat Linux7.2的GNOME图形方式下如何切换到文本方式?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 假如已经以UDP方式监听8000端口,还能以TCP方式监听8000吗?
  • c++类对象初始化方式
  • 新手问题:怎么从从命令行方式进入窗口方式?
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 怎么将linux的图形登陆方式改为文本方式?
  • 标准c++四种强制类型转换方式介绍
  • 如何从图形引导方式转换到文本引导方式?
  • windows堆栈溢出利用的七种方式
  • 请教:由于图形方式启动黑屏, 在grub下如何修改RHL9 以文字方式启动? 谢谢.-8:25


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,