core1011 发表于 2012-11-23 10:19

inux下的动态库.so的疑惑!!

linux下的动态库 例如libpthread这个我们常用的线程库,我现在姑且只知道在网上下载一个这样的库文件的压缩文件回来(xxxxx.tar.gz),在终端下解压就可以了,让后./configure 在make, make install后会自动在usr/local里产生include和lib文件 然后里面就有了一些xxx.la ,xxxx.axxx.soxxx.so.2.4什么的静态库喝一些动态库了, 呵呵说了一大些 ,现在想知道的是,makefile里的 用的编译器是GCC的,而且这些的静态库与动态库 都是GCC编译产生的对吧。但是 如果我的工程在需要这些动态库文件的时候,但是,我的工程编译时用的arm-gcc的时候这些动态库文件还可以在继续用的吗,如果不能用的话,是不是把原先的库文件都要用arm-gcc重新再编译一次吗?

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

goldenfort 发表于 2012-11-23 12:12

回复 1# core1011


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

zj47596731 发表于 2012-11-28 15:05

本帖最后由 zj47596731 于 2012-11-28 15:05 编辑

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

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

core1011 发表于 2012-12-06 09:48

回复 3# zj47596731


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

core1011 发表于 2012-12-06 09:55

回复 2# goldenfort


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

myjiaqin 发表于 2012-12-06 10:14

我们平时的编译器在编译时都是静态去加载系统的所提供的函数的吗(如 常用的字符串函数 strcat strcopy什么的)??
这些函数通常都是C运行时提供的(libc),所以默认情况下都是动态链接。

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

goldenfort 发表于 2012-12-06 11:39

回复 5# core1011


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

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

你那没提供,是被代理商 半路截了吧
页: [1]
查看完整版本: inux下的动态库.so的疑惑!!