有時候,我們在Ubuntu 上編譯arm Linux內核時,會出現”make: arm-linux-gnueabihf-gcc:命令未找到“的問題,即系統未找到交叉編譯工具的情況,此時可以按照以下步驟進行檢查。
1. 確認是否已經安裝好交叉編譯工具,比如arm-linux-gcc 或者 arm-linux-gnueabihf-gcc 等等
比如:
root@Linux-host:~# arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../libexec/gcc/arm-linux-gnueabihf/4.9.2/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/src/gcc-linaro-4.9-2014.09/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install --with-sysroot=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --disable-multilib --enable-multiarch --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-isl=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-plugin --enable-gold --with-local-prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long --with-mode=thumb --disable-multilib --with-float=hard
Thread model: posix
gcc version 4.9.2 20140904 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09)
可以看出已經安裝好了arm gcc 版本是4.9.2
2. 檢查環境變量的配置 /etc/profile,是否將交叉編譯工具的路徑添加進去
比如:
root@Linux-host:~# cat /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
#export PATH=/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin:$PATH
#export PATH=$PATH:/home/ctools/arm-2011.03/bin
export PATH=$PATH:/root/cmake/bin
export PATH=$PATH:/home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin
我們在/etc/profile文件的最後一行“export PATH=$PATH:/home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin”可以看出已經將交叉編譯的路徑添加入環境變量中(路徑根據實際情況改變)。
3. 如果上面兩步都沒有問題,那我們需要在當前終端中輸入
root@Linux-host:~# source /etc/profile
更新當前環境變量
擴展關於source /etc/profile 知識
摘自:https://blog.51cto.com/carrie1314/1296298
環境變量設置方法:
- /etc/profile: 在登錄時,操作系統定製用戶環境時使用的第一個文件,此文件爲系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。
- /etc/environment: 在登錄時,操作系統使用的第二個文件。系統在讀取你自己的profile前,設置環境文件的環境變量。
- ~/.bash_profile: 在登錄時用到的第三個文件是。profile 文件,每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,它用於設置一些環境變量,執行用戶的.bashrc文件。/etc/bashrc: 爲每一個運行bash shell的用戶執行此文件。當bash shell被打開時,該文件被讀取。
- ~/.bashrc: 該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該文件被讀取。
幾個環境變量的優先級
- 1>2>3
設置永久環境變量
- 環境變量配置中,要先刪除.bash_profile中的三行關於.bashrc的 定義,然後把環境變量配置在.bashrc中
- 選擇要使用的java環境:update-alternatives –config java
- 要使得剛修改的環境變量生效:source .bashrc
- 查看環境變量:env
可以放到/etc/bash/bashrc,這樣就是系統級的