当前我有两个文件
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
似乎找不到此存档文件。有人可以告诉我为什么会这样吗?
答案 0 :(得分:1)
但是如果我将libxxx.a放入lb链接程序的搜索路径之一,则与libc.a处于同一目录,
gcc -o prog main.c
就是行不通。
这是期望和期望的:您不希望编写的每个程序与系统搜索路径中安装的每个库链接。您想要的是:
gcc -o prog main.c -lxxx
也就是说,将库复制到/usr/lib
中允许无需任何额外的搜索参数即可找到链接器,但是您 still 必须告诉链接器您想要链接到libxxx
。