Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash:覆盖make文件中的路径_Linux_Bash_Makefile - Fatal编程技术网

Linux Bash:覆盖make文件中的路径

Linux Bash:覆盖make文件中的路径,linux,bash,makefile,Linux,Bash,Makefile,我正在创建一个bash脚本,它使用arm的gcc的本地副本。我需要有多个版本的gcc周围的兼容性。我的bash脚本正确下载二进制文件,在本地设置路径,但make文件忽略本地版本 阅读一些文档后,我发现bash脚本中有一个export-e OPTION=VALUE,它将覆盖make default路径 这在我的bash本地副本中运行得很好,但是当通过circle测试服务器运行它时,它失败了,说-e是无效的选项 有人知道更好的方法来覆盖make中的路径吗?特别是对于我无法更改make文件的第三方项目

我正在创建一个bash脚本,它使用arm的gcc的本地副本。我需要有多个版本的gcc周围的兼容性。我的bash脚本正确下载二进制文件,在本地设置路径,但make文件忽略本地版本

阅读一些文档后,我发现bash脚本中有一个
export-e OPTION=VALUE
,它将覆盖make default路径

这在我的bash本地副本中运行得很好,但是当通过circle测试服务器运行它时,它失败了,说
-e
是无效的选项

有人知道更好的方法来覆盖make中的路径吗?特别是对于我无法更改make文件的第三方项目

GCC_ARM_VER=gcc-arm-none-eabi-4_8-2014q2    
export -e GCC_ARM_PATH=$BINDIR/gcc-arm-embedded/$GCC_ARM_VER/bin
export PATH=$GCC_ARM_PATH:$PATH
make all -s -C "$BASE_FIRMWARE/"firmware APPDIR="$CWD/firmware" TARGET_DIR="$CWD/bin" PLATFORM="$1" || exit
然后在make文件(arm tools.mk)中:


为了澄清Jonathan所说的,您不想使用
export-e
,也不想使用
make-e
,也不需要修改makefile。如果希望变量赋值优先,只需将其添加到make命令行:

GCC_ARM_VER=gcc-arm-none-eabi-4_8-2014q2
export PATH=$GCC_ARM_PATH:$PATH
make all -s -C "$BASE_FIRMWARE/"firmware \
    APPDIR="$CWD/firmware" TARGET_DIR="$CWD/bin" PLATFORM="$1" \
    GCC_ARM_PATH="$BINDIR/gcc-arm-embedded/$GCC_ARM_VER/bin" \
  || exit

为了澄清Jonathan所说的,您不想使用
export-e
,也不想使用
make-e
,也不需要修改makefile。如果希望变量赋值优先,只需将其添加到make命令行:

GCC_ARM_VER=gcc-arm-none-eabi-4_8-2014q2
export PATH=$GCC_ARM_PATH:$PATH
make all -s -C "$BASE_FIRMWARE/"firmware \
    APPDIR="$CWD/firmware" TARGET_DIR="$CWD/bin" PLATFORM="$1" \
    GCC_ARM_PATH="$BINDIR/gcc-arm-embedded/$GCC_ARM_VER/bin" \
  || exit

我想你误读了
make
手册。正如这里所说的,
-e
make
选项,而不是
export
选项。回到您的问题-在使用
ARM工具.mk
之前,
GCC\u ARM\u路径是否设置在
ARM工具.mk
的某个位置?如果必须修复某个问题,则在命令行上设置为
make
的参数不能被环境或makefile覆盖(在顶级
make
)。正常的优先级层次结构(从高到低)是命令行参数、makefile和环境;
make-e
选项将其更改为命令行参数、环境、makefile。我认为您误读了
make
手册。正如这里所说的,
-e
make
选项,而不是
export
选项。回到您的问题-在使用
ARM工具.mk
之前,
GCC\u ARM\u路径是否设置在
ARM工具.mk
的某个位置?如果必须修复某个问题,则在命令行上设置为
make
的参数不能被环境或makefile覆盖(在顶级
make
)。正常的优先级层次结构(从高到低)是命令行参数、makefile和环境;
make-e
选项将其更改为命令行参数、环境、makefile。