bash - Makefile 中的脚本通常用于查找工具链的路径

标签 bash shell makefile

我正在尝试为 JVM 端口编写 Makefile。我已经导出了一个变量,例如 $CROSS_COMPILE=mipsel-linux-
对于具有特定工具链的不同平台,这可能会有所不同。 工具链可以位于不同的位置,但保证位于 PATH 中(例如:/opt/toolchains/mipsel/bin/mipsel-linux-gcc)
我的目标是从我的 make 文件中获取到“opt/toolchains/mipsel/bin/mipsel-linux-”的路径。
我目前的想法是做类似的事情
1) which $(CROSS_COMPILE)gcc ----- 这将返回类似“/opt/toolchains/mipsel/bin/mipsel-linux-gcc”的内容
2) 使用该字符串并从末尾删除 gcc。

我想这应该是可能的。但我不知道如何继续。有关如何开始的指示将不胜感激。
我尝试过“which $(CROSS_COMPILE)gcc”和which ($(CROSS_COMPILE)gcc),两者都不起作用

最佳答案

有很多 GNU Make 函数可以检索目录名称等。

PATHTOTOOLS:=$(dir $(shell which $(CROSS_COMPILE)gcc))

另请注意使用 := 赋值仅计算一次,从而避免重复运行 which 命令。

关于bash - Makefile 中的脚本通常用于查找工具链的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9802247/

相关文章:

linux - 无法遍历所有文件夹

ubuntu - 没有为 nginx pagespeed 模块制作目标模块的规则

linux - bash:查找目录和子目录中首字母为z或Z的所有文件

string - Bash:重复字符可变次数

linux - 新手错误 : cp: omitting directory

gcc - 如何使用cmake构建包?

opengl - Mac - OpenGL - 找不到发光

linux - 如何查看特定日期的备份文件列表

Bash:将文件复制到最新目录

java - 为什么在 Java 中使用管道执行系统命令会在没有空格的情况下失败?