No seu exemplo
export PATH=./ndk_tools/bin/:${PATH}
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
echo \
"$CC"
CC --version
a última linha usa o literal nome CC
(que é convencionalmente um compilador C ++) em vez de uma variável shell $CC
(que usaria a variável de ambiente que você exportou).
Talvez você quisesse dizer
export PATH=./ndk_tools/bin/:${PATH}
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
echo \
"$CC"
$CC --version
Você também pode simplesmente tornar cc
o de ndk_tools
criando um link simbólico para esse (chamado "cc") no seu PATH
, mas isso interferiria no uso nativo do compilador. Então variáveis de ambiente (e uso seletivo) é o caminho a percorrer.
Em um makefile, você usaria esse símbolo com parênteses ou chaves, por exemplo, $(CC)
ou ${CC}
. Sem as chaves, make
veria $C
C
, que não é o que você deseja. Você pode definir a variável no makefile de várias maneiras, por exemplo,
make CC="$CC"
make -e
Na maioria das vezes, eu estaria usando o valor diretamente no makefile, devido ao uso de construções baseadas em autoconf ou imake. Para esses casos, exportar a variável seria menos importante.