不同伺服器編譯鏈目錄不同-ag真人国际官网
簡介
交叉編譯工具鏈是一個由編譯器、連接器和解釋器組成的綜合開發環境,交叉編譯工具鏈主要由binutils、gcc和glibc 3個部分組成。有時出於減小libc庫大小的考慮,也可以用別的c庫來代替glibc,例如uclibc、dietlibc和newlib。交叉編譯工具鏈主要包括針對目標系統的編譯器gcc、目標系統的二進制工具binutils、目標系統的標准c庫glibc和目標系統的linux內核頭文件。第一個步驟就是確定目標平台。每個目標平台都有一個明確的格式,這些信息用於在構建過程中識別要使用的不同工具的正確版本。因此,當在一個特定目標機下運行gcc時,gcc便在目錄路徑中查找包含該目標規范的應用程序路徑。gnu的目標規范格式為cpu-platform-os。例如,建立基於arm平台的交叉工具鏈,目標平台名為arm-linux-gnu。
交叉編譯工具鏈的製作方法
分步編譯和安裝交叉編譯工具鏈所需要的庫和源代碼,最終生成交叉編譯工具鏈。
通過crosstool腳本工具來實現一次編譯生成交叉編譯工具鏈。
直接通過網上(ftp.arm.kernel.org.uk)下載已經製作好的交叉編譯工具鏈。
方法1相對比較困難,適合想深入學習構建交叉工具鏈的讀者。如果只是想使用交叉工具鏈,建議使用方法2或方法3構建交叉工具鏈。方法3的優點不用多說,當然是簡單省事,但與此同時該方法有一定的弊端就是局限性太大,因為畢竟是別人構建好的,也就是固定的沒有靈活性,所以構建所用的庫以及編譯器的版本也許並不適合你要編譯的程序,同時也許會在使用時出現許多莫名的錯誤,建議你慎用此方法。
方法1:分步構建交叉編譯工具鏈
下載所需的源代碼包
建立工作目錄
建立環境變數
編譯、安裝binutils
獲取內核頭文件
編譯gcc的輔助編譯器
編譯生成glibc庫
編譯生成完整的gcc
由於在問答中的篇幅,我不能細述具體的步驟,興趣的同學請自行閱讀開源共創協議的《linux from scratch》,網址是:linuxfromscratch dot org
。
方法2:用crosstool工具構建交叉工具鏈(推薦)
crosstool是一組腳本工具集,可構建和測試不同版本的gcc和glibc,用於那些支持glibc的體系結構。它也是一個開源項目,下載地址是kegel dot com/crosstool。用crosstool構建交叉工具鏈要比上述的分步編譯容易得多,並且也方便許多,對於僅僅為了工作需要構建交叉編譯工具鏈的你,建議使用此方法。
運行which makeinfo,如果不能找見該命令,在解壓texinfo-4.11.tar.bz2,進入texinfo-4.11目錄,執行./configure&&make&&make install完成makeinfo工具的安裝
准備文件:
下載所需資源文件linux-2.4.20.tar.gz、binutils-2.19.tar.bz2、gcc-3.3.6.tar.gz、glibc- 2.3.2.tar.gz、glibc-linuxthreads-2.3.2.tar.gz和gdb-6.5.tar.bz2。然後將這些工具包文件放在新建的$home/downloads目錄下,最後在$home/目錄下解壓crosstool-0.43.tar.gz,命
令如下:
#cd$home/
#tar–xvzfcrosstool-0.43.tar.gz
建立腳本文件
接著需要建立自己的編譯腳本,起名為arm.sh,為了簡化編寫arm.sh,尋找一個最接近的腳本文件demo-arm.sh作為模板,然後將該腳本的內容復制到arm.sh,修改arm.sh腳本,具體操作如下:
# cd crosstool-0.43
# cp demo-arm.sh arm.sh
# vi arm.sh
修改後的arm.sh腳本內容如下:
#!/bin/sh
set-ex
tarballs_dir=$home/downloads#定義工具鏈源碼所存放位置。
result_top=$home/arm-bin#定義工具鏈的安裝目錄
exporttarballs_dirresult_top
gcc_languages="c,c "#定義支持c,c 語言
exportgcc_languages
#創建/opt/crosstool目錄
mkdir-p$result_top
#編譯工具鏈,該過程需要數小時完成。
eval'catarm.datgcc-3.3.6-glibc-2.3.2.dat'shall.sh--notest
echodone.
建立配置文件
在arm.sh腳本文件中需要注意arm-xscale.dat和gcc-3.3.6-glibc-2.3.2.dat兩個文件,這兩個文件是作為crosstool的編譯的配置文件。其中arm.dat文件內容如下,主要用於定義配置文件、定義生成編譯工具鏈的名稱以及定義編譯選項等。
kernelconfig='pwd'/arm.config#內核的配置
target=arm-linux#編譯生成的工具鏈名稱
target_cflags="-o"#編譯選項
gcc-3.3.6-glibc-2.3.2.dat文件內容如下,該文件主要定義編譯過程中所需要的庫以及它定義的版本,如果在編譯過程中發現有些庫不存在時,crosstool會自動在相關網站上下載,該工具在這點上相對比較智能,也非常有用。
binutils_dir=binutils-2.19
gcc_dir=gcc-3.3.6
glibc_dir=glibc-2.3.2
linux_dir=linux-2.6.10-8(根據實際情況填寫)
gdb_dir=gdb-6.5
執行腳本
將crosstool的腳本文件和配置文件准備好之後,開始執行arm.sh腳本來編譯交叉編譯工具。具體執行命令如下:
#cdcrosstool-0.43
#./arm.sh
經過數小時的漫長編譯之後,會在/opt/crosstool目錄下生成新的交叉編譯工具,其中包括以下內容:
arm-linux-addr2linearm-linux-g arm-linux-ldarm-linux-size
arm-linux-ararm-linux-gccarm-linux-nmarm-linux-strings
arm-linux-asarm-linux-gcc-3.3.6arm-linux-objarm-linux-strip
arm-linux-c arm-linux-gccbugarm-linux-objmpfix-embedded-paths
arm-linux-c filtarm-linux-gcovarm-linux-ranlib
arm-linux-cpparm-linux-gprofarm-linux-readelf
添加環境變數
然後將生成的編譯工具鏈路徑添加到環境變數path上去,添加的方法是在系統/etc/ bashrc文件的最後添加下面一行,在bashrc文件中添加環境變數
export path=/home/jiabing/gcc-3.3.6-glibc-2.3.2/arm-linux-bin/bin:$path
至此,arm-linux下的交叉編譯工具鏈已經完成,現在就可以使用arm-linux-gcc來生成試驗箱上的程序了!
㈡ c 中, 編譯鏈接產生的目標文件在哪個目錄下
vs 一般在工程目錄下的debug/release下, 如果是64位系統,根據你選擇編譯位數找一下x86或者x64文件夾下
自己手動通過cl 編譯連接,則會在你指定的位置(默認是當前目錄下)生成obj文件
㈢ windows server 2008 r2 架設ftp伺服器並配置訪問多個不同的目錄
1、 進入【控制面板】ー>【管理工具】ー>internet信息服務(iis);
2、 雙擊【默認ftp站點】,在右側菜單中配置ftp主目錄、登錄賬戶、操作許可權等;
3、右擊【默認ftp站點】ー>【添加虛擬目錄】,設置虛擬目錄名稱,此名稱可以隨便寫,若要設置多個虛擬目錄,注意多個虛擬目錄的名稱不要重復;
4、設置虛擬目錄實際對應的物理路徑;
5、 顯示虛擬目錄(重要) :此時進入ftp主目錄下是看不到添加的虛擬目錄的,若要能在主目錄下訪問並能操作虛擬目錄, 需在主目錄文件夾下創建一個與前面設置的虛擬目錄別名同名的空文件夾 , 重新登錄ftp即可發現主目錄中多出來添加的虛擬目錄;
6、對虛擬目錄內的這些文件操作時,實際上是對虛擬目錄的操作。
㈣ 如何解決linux下編譯環境,運行環境不同的問題
基於linux操作系統的應用開發環境一般是由目標系統硬體(開發板)和宿主pc機所構成。目標硬體開發板用於運行操作系統和系統應用軟體,而目標板所用到的操作系統的內核編譯、應用程序的開發和調試則需要通過宿主pc機來完成(所以稱為交叉編譯)。雙方之間一般通過串口,並口或乙太網介面建立連接關系。
但在此我建議構建如下的交叉編譯環境,適合個人或研發小組使用:單獨拿出一台pc機(pii以上即可,就用以前淘汰的舊機器就可以),在該pc上安裝桌面的linux操作系統(如red hat linux 8.0及以上),可以採用默認的安裝選項(注意要包含ftp服務),這台pc作為linux伺服器,除管理員以外,一般不直接讓其他人去操作。
將該linux伺服器接入區域網,並新建一些合法用戶,以便其他的pc機(在此我們將其稱為工作站)的合法用戶能訪問到linux伺服器。而其他的pc機(工作站)仍然使用windows操作系統,原來幹啥繼續幹啥。
需要的軟體工具包括:
1、ftp客戶端程序(如cuteftp,可到網上下載)。
2、telnet工具(如securecrt,可到網上下載)。
3、移植到某一特定arm平台的linux操作系統內核源碼(一般由銷售商整理提供)。
4、gnu編譯工具,可由相關網站下載,或由銷售商整理提供。
在工作站安裝:
在某工作站pc上安裝ftp客戶端程序和telnet工具,安裝完畢後應該可以在該工作站pc和linux伺服器之間進行文件的傳輸,並在工作站pc可以通過telnet登陸到linux伺服器(可能需要將linux伺服器的防火牆服務關閉才能完成)。
在linux伺服器安裝:
將工作站pc上的linux操作系統內核源碼壓縮包和gnu編譯工具通過ftp傳送到linux伺服器的某個目錄(如合法的用戶目錄),然後在該目錄下解壓,並將gnu編譯工具安裝到默認的工作目錄即可,以上工作通過在工作站pc使用telnet工具完成,而不需要在linux伺服器上進行。
linux操作系統內核的編譯:
linux操作系統內核的編譯一般有一個比較固定的步驟,會根據makefile文件的不同而略有差異,可參考相關文檔,編譯的工作在工作站pc使用telnet工具完成。
㈤ 如何更改ubuntu中交叉編譯工具鏈
更改ubuntu中交叉編譯工具鏈的操作步驟如下:
1. 下載軟體包
從linaro的網站下載預編譯二進制包,地址:https://launchpad.net/linaro-toolchain-binaries/trunk/2013.10。
注意選擇的版本,要使用linux下的哦。選擇這個:gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.bz2
2. 解壓
解壓gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz到 ~/arm-cross-toolchain/目錄下
3. 設置環境變數
~$ vi .bashrc
在最後添加如下 2 行:
path=$path:/home/lxl/arm-cross-toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin
export path
請注意,第一行的$path後面是英文冒號,而冒號後面是你的cross-toolchain的可執行文件目錄(bin目錄)的絕對路徑。這兩句的意思就是將cross-toolchain的可執行文件路徑加入系統環境變數path中。
4. 使環境變數 生效
~$ source .bashrc
5. 測試