gcc静态库链接
时间:2010-08-12
来源:互联网
编译出现的问题:用GCC编译找不到 printf等常用函数(stdio.h中声明的)
abc.c

曾尝试指定 /usr/lib/libc.a,这回printf不包错了,但出现如下错误:
/usr/lib/libc.a(iofwrite.o): In function `fwrite':
(.text+0x144): undefined reference to `_Unwind_Resume'
这到底是怎么回事?按正常来说是不用指定 /usr/lib/libc.a(系统默认链接的).........
作者: kallytin 发布时间: 2010-08-12
先顶一下
作者: kallytin 发布时间: 2010-08-12
有人知道吗?
作者: kallytin 发布时间: 2010-08-12
作者: zzyong08 发布时间: 2010-08-12
作者: zhangsuozhu 发布时间: 2010-08-12
(1)静态连接库libc.a
(2)共享连接库libc.so
两者的共同点:
.a, .so都是.o目标文件的集合,这些目标文件中含有一些函数的定义(机器码),而这些函数将在连接时会被最终的可执行文件用到。
两者的区别:
静
态库.a : 当程序与静态库连接时,库中目标文件所含的所有将被程序使用的函数的机器码被copy到最终的可执行文件中. 静态库有个缺点:
占用磁盘和内存空间. 静态库会被添加到和它连接的每个程序中, 而且这些程序运行时, 都会被加载到内存中. 无形中又多消耗了更多的内存空间.
共
享库.so : 与共享库连接的可执行文件只包含它需要的函数的引用表,而不是所有的函数代码,只有在程序执行时,
那些需要的函数代码才被拷贝到内存中, 这样就使可执行文件比较小,
编译时要联静态库要加 -static 参数
- gcc test.c
- ls -l a.out
- -rwxr-xr-x 1 alanx alanx 7057 2010-08-12 12:57 a.out
- gcc -static test.c
- ls -l a.out
- -rwxr-xr-x 1 alanx alanx 495437 2010-08-12 12:58 a.out
作者: zhangsuozhu 发布时间: 2010-08-12
printf,你用的应该是动态库的方式吧,在/lib目录下有libc-*.so的。
作者: ecjtubaowp 发布时间: 2010-08-12
zhangsuozhu 发表于 2010-08-12 12:51
楼上,能说详细点吗? (我在/lib里只找到一个libc-2.8.90.so)
作者: kallytin 发布时间: 2010-08-12
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28