Ubuntu下GNU Make无法展开环境变量的技术求助
解决GNU Make无法读取终端环境变量的问题
核心原因
直接运行settings.sh脚本时,变量仅在脚本自身的子shell中生效,不会传递到当前终端的shell环境,因此make进程无法读取到这些变量。
具体解决方法
通过source/
.命令加载脚本
不要直接执行./settings.sh,改用以下命令将变量注入当前终端环境:source ./settings.sh # 或简写为 . ./settings.sh验证变量状态
加载脚本后,在终端执行以下命令确认变量生效:echo $TOOLCHAIN_PATH echo $TOOL_CC确认输出正确值后再运行
make。备选:运行make时直接传递变量
若不想修改当前shell环境,可在启动make时直接指定变量:TOOLCHAIN_PATH="/opt/armc7-eabihf-glibc/bin" TOOL_CC="arm_linux-gcc" make或者先导出变量再执行make:
export TOOLCHAIN_PATH="/opt/armc7-eabihf-glibc/bin" export TOOL_CC="arm_linux-gcc" make
补充提示
GNU Make默认继承当前shell的环境变量,但变量需要处于已导出状态。如果你的settings.sh脚本里没有用export声明变量,即使source了脚本,子进程(如make)也无法继承。建议在脚本中添加export:
export TOOLCHAIN_PATH="/opt/armc7-eabihf-glibc/bin" export TOOL_CC="arm_linux-gcc"
内容的提问来源于stack exchange,提问作者PhilipJ
相关产品推荐
相关产品推荐

