当前位置: 技术问答>linux和unix
Linux与cygwin下的链接过程不一样?
来源: 互联网 发布时间:2016-05-16
本文导语: 本人系linux新手,问题肉了别见笑: 1. 在linux下生成需要链接多个静态库的可执行文件时,这些静态库在写-l的时候有先后顺序吗? 比如:1.a依赖于2.a,链接它们的时候需要把2放在1后面? 2. 如1.的答案为不一定,那是否是...
本人系linux新手,问题肉了别见笑:
1. 在linux下生成需要链接多个静态库的可执行文件时,这些静态库在写-l的时候有先后顺序吗?
比如:1.a依赖于2.a,链接它们的时候需要把2放在1后面?
2. 如1.的答案为不一定,那是否是与连接器的版本有关?
3. 如1.的答案为否,那是否现今主流linux使用的编译器连接器与cygwin使用的不一样?因为在cygwin中出现了这样的问题,一旦链接顺序不正确,就会出现undefined symbols。
|
从 gcc 文档来看,静态库在写 -l 的时候有先后顺序的
如果 lz 都是使用 gcc,就按照这个规则
如果 lz 都是使用 gcc,就按照这个规则
-llibrary
It makes a difference where in the command you write this option; the linker searches
and processes libraries and object files in the order they are specified. Thus,
`foo.o -lz bar.o' searches library `z' after file foo.o but before bar.o.
If bar.o refers to functions in `z', those functions may not be loaded.