为什么不能将自己的C库文件放入ld搜索路径?

时间:2018-07-01 13:48:17

标签: linker

当前我有两个文件

main.c
libxxx.a

main.c引用了libxxx.a中可重定位目标文件的源代码中定义的一些函数。

现在,以下命令成功编译了main.c并将其链接到libxxx.a:

gcc -o prog main.c libxxx.a

但是如果我将libxxx.a放在ld的搜索路径之一中,则与libc.a处于同一目录,

gcc -o prog main.c

只是行不通。在目录中搜索时,ld似乎找不到此存档文件。有人可以告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

  

但是如果我将libxxx.a放入lb链接程序的搜索路径之一,则与libc.a处于同一目录,

     

gcc -o prog main.c

     

就是行不通。

这是期望和期望的:您不希望编写的每个程序与系统搜索路径中安装的每个库链接。您想要的是:

gcc -o prog main.c -lxxx

也就是说,将库复制到/usr/lib允许无需任何额外的搜索参数即可找到链接器,但是您 still 必须告诉链接器您想要链接到libxxx