嵌入式编程互联网科技程序员

ld链接库

2017-10-13  本文已影响7人  罗蓁蓁

ld链接库

`-( ARCHIVES-)'`--start-group ARCHIVES --end-group'

ARCHIVES应当是一个关于档案文件的列表.它们可以是显式的文件名,或者'-l'选项。这些指定的档案文件会被多遍搜索,直到没有新的无定义引用被创建。

通常,一个档案文件只会被搜索一次。但如果这个档案文件中的一个符号需要被用来解析一个档案中的目标引用到的无定义的符号,而这个符号在命令行上的后面某个档案文件中出现,连接器不能解析这个引用。把这些档案文件分组后,它们都可被反复搜索直到所有可能的引用都被解析了为止。

使用这个选项有一个很大的运行开销.只有在无法避免在多个档案文件中使用循环引用时才用它。

这是在工具链接的其它中:

这是在工具链接的库中:

这是指定放在makefile中,并且在—start-group外面,顺序为-lsecond

–lstatic,其中second中的函数引用,定义在static中:

这是指定放在makefile中,并且在—start-group外面,顺序为-lstatic

-lsecond:

由此可见,--start-group  ARCHIVES  --end-group,的确起到了多个档案文件中使用循环引用时,保证正确。如果不用它,那么链接的顺序一定是:先链接定义函数所在的库,在链接引用函数所在的库。

另外,链接库的方式我知道有两种:

直接使用绝对路径下的文件。比如:F:/workspace/6.1.3.2/platform/workspace/libsecond.a。

使用-l参数,比如-lsecond。

如果ld加了参数-non-static,那么默认的-lsecond,会优先搜索second.so,如果找不到会再搜索second.a。

上一篇下一篇

猜你喜欢

热点阅读