嵌入式Linux---編譯內核時,出現“make: arm-linux-gnueabihf-gcc: 命令未找到”的情況

       有時候,我們在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

環境變量設置方法:

  1. /etc/profile: 在登錄時,操作系統定製用戶環境時使用的第一個文件,此文件爲系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。
  2. /etc/environment: 在登錄時,操作系統使用的第二個文件。系統在讀取你自己的profile前,設置環境文件的環境變量。
  3. ~/.bash_profile: 在登錄時用到的第三個文件是。profile 文件,每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,它用於設置一些環境變量,執行用戶的.bashrc文件。/etc/bashrc: 爲每一個運行bash shell的用戶執行此文件。當bash shell被打開時,該文件被讀取。
  4. ~/.bashrc: 該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該文件被讀取。

幾個環境變量的優先級

  • 1>2>3

設置永久環境變量

  1. 環境變量配置中,要先刪除.bash_profile中的三行關於.bashrc的 定義,然後把環境變量配置在.bashrc中
  2. 選擇要使用的java環境:update-alternatives –config java
  3. 要使得剛修改的環境變量生效:source .bashrc
  4. 查看環境變量:env

可以放到/etc/bash/bashrc,這樣就是系統級的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章