免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2190 | 回复: 6
打印 上一主题 下一主题

[操作系统] inux下的动态库.so的疑惑!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-23 10:19 |只看该作者 |倒序浏览
linux下的动态库 例如libpthread这个我们常用的线程库,我现在姑且只知道在网上下载一个这样的库文件的压缩文件回来(xxxxx.tar.gz),在终端下解压就可以了,让后./configure 在make, make install后会自动在usr/local里产生include和lib文件 然后里面就有了一些xxx.la ,xxxx.a  xxx.so  xxx.so.2.4什么的静态库喝一些动态库了, 呵呵说了一大些 ,现在想知道的是,makefile里的 用的编译器是GCC的,而且这些的静态库与动态库 都是GCC编译产生的对吧。  但是 如果我的工程在需要这些动态库文件的时候,但是,我的工程编译时用的arm-gcc的时候这些动态库文件还可以在继续用的吗,如果不能用的话,是不是把原先的库文件都要用arm-gcc重新再编译一次吗?

呵呵,还有小问题是,我们平时的编译器在编译时都是静态去加载系统的所提供的函数的吗(如 常用的字符串函数 strcat strcopy什么的)??

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2012-11-23 12:12 |只看该作者
回复 1# core1011


    libthread 库等常用的库, 如果用arm 处理器的话,一般cpu 厂家提供的开发包都编译好了。

论坛徽章:
1
技术图书徽章
日期:2013-10-29 15:46:41
3 [报告]
发表于 2012-11-28 15:05 |只看该作者
本帖最后由 zj47596731 于 2012-11-28 15:05 编辑

库文件当然也要交叉编译,这个动作在建立交叉编译环境的时候就应该做好了

对于你的小问题 一般的函数都直接编译链接到二进制文件了 运行时一起加载到内存 不需动态加载了

论坛徽章:
0
4 [报告]
发表于 2012-12-06 09:48 |只看该作者
回复 3# zj47596731


    编程中用不到其他非标准库的时候还是要动态加载的!

论坛徽章:
0
5 [报告]
发表于 2012-12-06 09:55 |只看该作者
回复 2# goldenfort


    同志 你开发时你遇到过 开发商,或芯片代理商 会提供的?

论坛徽章:
0
6 [报告]
发表于 2012-12-06 10:14 |只看该作者
我们平时的编译器在编译时都是静态去加载系统的所提供的函数的吗(如 常用的字符串函数 strcat strcopy什么的)??
这些函数通常都是C运行时提供的(libc),所以默认情况下都是动态链接。

交叉编译的时候libpthread等库的时候至少需要指定C运行时库或者完全采用静态编译,这看你的开发板环境使用的是什么库了如glibc,如果动态编译libpthread等库时指定的库和开发板上运行的C库不同时是不能正常工作的。当然,不管是静态编译使用的静态库还是动态编译使用的动态库都必需是能在开发板上运行的(即交叉编译过的)。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2012-12-06 11:39 |只看该作者
回复 5# core1011


   那当然,用三星 cpu ,三星  提供,  用broadcom 芯片, broadcom 提供。

人家 制造 一个cpu 成本 巨大,  做个开发包, 不到制造成本 1%, 不提供开发包, 芯片性能无法验证,谁敢用芯片。

  你那没提供,是被代理商 半路  截了吧  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP