我想为一堆可执行文件定义一个带有隐式规则的 Makefile,其中一些需要链接到自定义构建的库(我们称之为libedich.a)。
我的问题是,我希望能够构建那些在libedich.a后者尚未构建时不需要的可执行文件。如果我只是添加-ledich到变量中,当不存在LDLIBS时我会收到错误:libedich.a
/usr/bin/ld: cannot find -ledich
Run Code Online (Sandbox Code Playgroud)
当给定的库不存在时,如何告诉 ld 可以继续链接?
小智 6
常见的解决方案是创建一个虚拟存档,以便 GCC 找到它。由于可执行文件不需要库中的任何符号,因此不会出错。像这样,
# create an empty archive.
ar cru libedich.a
Run Code Online (Sandbox Code Playgroud)
甚至更简单,
echo '!<arch>' >libedich.a
Run Code Online (Sandbox Code Playgroud)