我们正在设置一系列 Makefile,我们希望在其中有一个项目级包含目录,其中包含指向子项目级包含文件的符号链接。许多子项目开发人员选择让他们的包含文件也成为指向实际软件所在的另一个目录的符号链接。
所以我的问题是,将一个符号链接到另一个文件的符号链接是否效率低下(例如,在编译过程中可能包含数十次或更多次的 C++ 头文件)?
目录树示例:
/project/include/
x_header1.h -> /project/src/csci_x/include/header1.h
x_header2.h -> /project/src/csci_x/include/header2.h
/project/src/csci_x/
include/
header1.h -> /project/src/csci_x/local_1/cxx/header1.h
header2.h -> /project/src/csci_x/local_2/cxx/header2.h
local_1/cxx/
module1.cpp
header1.h
local_2/cxx/
module2.cpp
header2.h
答案1
不确定您说的低效是什么意思,但我的猜测是“不”。
内核处理所有符号链接,gnumake 只需执行 open() 即可获取文件。任何用户级应用程序都不关心(嗯,很少关心)它是否是符号链接,它只是获取文件。
与编译和将缓存写入/刷新到磁盘的时间相比,内核需要经过的额外符号链接级别是微不足道的。