1. 程式人生 > >arm-linux-gcc安裝及自定義bash指令碼環境變數設定

arm-linux-gcc安裝及自定義bash指令碼環境變數設定

2。 解壓 arm-linux-gcc-3.4.1.tar.bz2
  #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
  解壓過程需要一段時間,解壓後的檔案形成了 usr/local/ 資料夾,進入該資料夾,將   arm資料夾拷貝到/usr/local/下
  # cd usr/local/
  #cp -rv arm /usr/local/
  現在交叉編譯程式集都在/usr/local/arm/3.4.1/bin下面了

3。  修改環境變數,把交叉編譯器的路徑加入到PATH。(有三種方法,強烈推薦使用方法一)
     方法一:修改/etc/bash.bashrc檔案
                 #vim /etc/bash.bashrc
                 在最後加上:
                export PATH=$PATH:/usr/local/arm/3.4.1/bin
                export PATH
   方法二:修改/etc/profile檔案:
                # vim /etc/profile
               增加路徑設定,在末尾新增如下,儲存/etc/profile檔案:
               export PATH=$PATH:/usr/local/arm/3.4.1/bin
  方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin
                  注:(這隻能在當前的終端下才是有效的!)

4。 立即使新的環境變數生效,不用重啟電腦:
     對應方法一:#source /root/.bashrc
    對應方法二:# source /etc/profile

5。 檢查是否將路徑加入到PATH:
      # echo $PATH
  顯示的內容中有/usr/local/arm/bin,說明已經將交叉編譯器的路徑加入PATH。至此,交叉編譯環境安裝完成。
  6. 測試是否安裝成功
   # arm-linux-gcc -v
上面的命令會顯示arm-linux-gcc資訊和版本,這是我顯示的資訊:
 Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
 Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc- 3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu

 --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm

 -linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable

 -nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable- languages=c,c++ --enable-shared --enable-c99 --enable-long-long
 Thread model: posix
 gcc version 3.4.1

7.編譯Hello World程式,測試交叉工具鏈
寫下下面的Hello World程式,儲存為hello.c
    #include <stdio.h>
    int main()
    {
    printf("Hello World!/n");
       return 0;
    }
  
    執行下面的命令:
    # arm-linux-gcc -o hello hello.c
-------------------------------------------------------------

修改環境變數這一步修改/etc/profile檔案
在path中新增arm-linux-gcc路徑

if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/arm/3.4.1/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi
再source /etc/profile就可以重新整理環境變數
其他方式試過好像不行........

我們用linux作開發時有時候裝一個軟體需要配置一些軟體有關的資訊。另外,我們還要配置一下環境變數。例如:裝arm-linux-gcc 時就需要配置一下$PATH變數。下面介紹一下,linux shell 工作時需要讀取哪些目錄。我們都知道一般用linux 是使用shell和系統互動(即敲一些命令)。那這些命令有些是shell自己帶的,叫內部命令,有些是呼叫linux裡的程式,既然要呼叫就要有地方存著這些命令。怎麼告訴shell這些命令的位置那,就要通過環境變數來設定。如果你不設定環境變數的話,你想執行和那個軟體有關的命令就必須到那個目錄下。這樣是不是太麻煩。反正shell在使用時會自動搜尋目錄。那何必自己找那。呵呵

通常和環境變數有關的檔案有(以bash這個shell為例):

/etc/profile與/etc/bashrc 和 當前使用者家目錄下的 .bashrc

下面分別介紹一下:

/etc/profile 主要配置一些系統變數的。而 /etc/bashrc 是針對使用bash這個shell的所有使用者的。

而 家目錄的.bashrc是針對單個系統使用者的 如:在root家目錄下的只針對root使用者生效。

你可以用env set等命令來顯示你當前用的shell的環境變數。

也可以用export 來臨時新增環境變數。下面是export的使用方法:

export [-fnp][變數名稱]=[變數設定值]

補充說明:在shell中執行程式時,shell會提供一組環境變數。export可新增,修改或刪除環境變數,供後續執行的程式使用。export的效力僅及於該此登陸操作。

參  數:
 -f  代表[變數名稱]中為函式名稱。 
 -n  刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。 
 -p  列出所有的shell賦予程式的環境變數。

不過我們重點介紹一下用修改檔案的方法來做,因為這樣一次性就搞定這個問題了。

如果:你想讓所有的使用者的shell都能使用該路徑,則你要修改 /etc/bashrc 這個檔案,怎麼修改那,具體情況具體分析。下面給出一個我裝arm-linux-gcc 時寫的:

if [ -d /usr/local/arm/2.95.3 ] ; then
PATH=/usr/local/arm/2.95.3/bin:"${PATH}"
fi

 PATH後面跟的就是你安裝的軟體的bin目錄的位置。

如果你想讓單個使用者使用該環境變數,則修改相應的使用者的家目錄下的 .bashrc

修改後重新登入即可生效。

關於登入時shell讀取配置有關的知識:

對於登陸的shell而言:

登陸Shell

讀取順序:
先讀取 /etc/profile
家目錄下的 .bash_profile
家目錄下的 .bashrc
最後讀取 /etc/.bashrc
最後讀取 /etc/profile.d 檔案的所有指令碼檔案
關於各個檔案的具體作用:

(1)/etc/profile: 此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行. 並從/etc/profile.d目錄的配置檔案中搜集shell的設定(即登入時自動執行/etc/profile.d目錄下的所有檔案)。
(2)/etc/bashrc: 為每一個執行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取。
(3)~/.bash_profile: 每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當用戶登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案。
(4)~/.bashrc: 該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該該檔案被讀取。
(5)
~/.bash_logout:當每次退出系統(退出bash shell)時,執行該檔案.
另外,/etc/profile中設定的變數(全域性)的可以作用於任何使用者,而~/.bashrc等中設定的變數(區域性)只能繼承
/etc/profile中的變數,他們是"父子"關係。(即在/etc/ 目錄下配置的只針對全域性的,任何使用者都能用)
(6)~/.bash_profile 是互動式、login 方式進入 bash 執行的~/.bashrc 是互動式 non-login 方式進入 bash 執行的通常二者設定大致相同,所以通常前者會呼叫後者。

好了,先說到這吧!
以上內容部分來自網路。