如何更改 mac 操作系统上的默认 CC 命令?

bel*_*ian 1 compiler macintosh

export PATH=./ndk_tools/bin/:${PATH}
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
echo \
"$CC"
CC --version
Run Code Online (Sandbox Code Playgroud)

我使用该脚本来更改默认的 CC 命令,但它在 Mac 上不起作用。

打印:

Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Run Code Online (Sandbox Code Playgroud)

我的错在哪里?

Tho*_*key 5

在你的例子中

export PATH=./ndk_tools/bin/:${PATH}
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
echo \
"$CC"
CC --version
Run Code Online (Sandbox Code Playgroud)

最后一行使用文字名称 CC(通常是 C++ 编译器)而不是 shell变量 $CC(它将使用您导出的环境变量)。

也许你的意思是

export PATH=./ndk_tools/bin/:${PATH}
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
echo \
"$CC"
$CC --version
Run Code Online (Sandbox Code Playgroud)

您可能还想简单地通过在您的 上创建cc一个ndk_tools到该链接(名为“cc”)的符号链接来创建该链接PATH,但这会干扰编译器的本机使用。因此,环境变量(和选择性使用)是正确的选择。

在 makefile 中,您可以将此符号与括号或大括号一起使用,例如$(CC)${CC}。如果没有大括号,make会看到,这不是您想要的。您可以通过多种方式在 makefile 中设置变量,例如:$CC

make CC="$CC"
make -e
Run Code Online (Sandbox Code Playgroud)

大多数时候,由于使用基于 autoconf 或 imake 的构建,我会直接在makefile 中使用该值。对于这些情况,导出变量就不那么重要了。