上下文:我有一个 bash 脚本,它从 MinGW 交叉编译的 DLL 生成一个 Windows 导入库。作为构建过程的一部分,它运行llvm-dlltool-6.0
,因为这恰好是我安装时sudo apt-get install -y clang
(截至 2019 年 5 月)安装的该工具的特定版本。但是,我不确定这是否会是未来的版本,我真的不想将脚本与 clang 的版本绑定。
这似乎是 llvm 工具包中的一个缺陷。有许多工具带有后缀,并且没有符号链接到工具名称(我有两个llvm-dlltool-6.0
和llvm-dlltool-8
in /usr/bin/
)。
为我的系统解决这个问题的正确方法是使用update-alternatives
. 但是,我不希望每个运行构建脚本的人都这样做,也不希望每次更新 clang 时都需要不断地修复 Dockerfile。
是否有一种好方法(在 bash 脚本中)可以找到以llvm-dlltool
PATH 开头的最高版本后缀二进制文件?我可以ls /usr/bin/llvm-dlltool-* | tail -n1
,但我不能确定每个用户都将它安装在那个位置(如果用户确实有符号链接,我也想尊重符号链接llvm-dlltool
)。