强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁(yè) > 廠商 > 經(jīng)驗(yàn) > 交叉編譯工具鏈,交叉編譯環(huán)境包括哪些工具它的作用是什么

交叉編譯工具鏈,交叉編譯環(huán)境包括哪些工具它的作用是什么

來(lái)源:整理 時(shí)間:2023-08-19 23:30:21 編輯:智能門(mén)戶(hù) 手機(jī)版

本文目錄一覽

1,交叉編譯環(huán)境包括哪些工具它的作用是什么

首先你要知道一個(gè)軟件可能需要在多個(gè)CPU架構(gòu)的平臺(tái)上運(yùn)行,如ARM架構(gòu),X86架構(gòu)等等。假設(shè)你要開(kāi)發(fā)一個(gè)軟件目標(biāo)平臺(tái)是ARM,那么你可以選擇在PC上,即X86平臺(tái)上進(jìn)行開(kāi)發(fā),然后使用交叉編譯工具把軟件編譯成ARM架構(gòu)版本,然后才能在ARM上運(yùn)行,如果只是用一般的編譯工具鏈,那么只能編譯在當(dāng)前平臺(tái)上運(yùn)行。至于編譯工具鏈有哪些,具體要看你的開(kāi)發(fā)平臺(tái)和目標(biāo)平臺(tái),會(huì)對(duì)應(yīng)不同的編譯工具。

交叉編譯環(huán)境包括哪些工具它的作用是什么

2,LINUX交叉編譯工具鏈和GCC是什么關(guān)系啊

編譯工具鏈一般最簡(jiǎn)化的為 binutils + gcc + glibc + kernel-header 組合的環(huán)境。 GCC 就是編譯器,他的輸出每次安裝只能有針對(duì)一個(gè)架構(gòu)的指令輸出。如果要多個(gè)架構(gòu)輸出,那就要裝多個(gè) GCC ,所以編譯工具鏈里面會(huì)有一個(gè) GCC 。 交叉編譯就是跨架構(gòu)編譯,編譯出來(lái)的程序不能在本機(jī)執(zhí)行(當(dāng)然有例外情況)。所以這個(gè)時(shí)候就需要交叉編譯工具鏈。 工具鏈光有 GCC 是不行的,還需要一個(gè) binutils 的二進(jìn)制連接器,以及一個(gè)最基本的目標(biāo)架構(gòu)的 C 庫(kù),C 庫(kù)還需要一個(gè)目標(biāo)架構(gòu)的內(nèi)核源代碼才能完全工作(當(dāng)然不是必須的,但編譯有的時(shí)候需要) 又因?yàn)?GCC 、binutils 不能實(shí)現(xiàn)單軟件同時(shí)多架構(gòu)輸出,所以需要單獨(dú)另裝,又加上 C 庫(kù)和內(nèi)核頭文件需要目標(biāo)架構(gòu)的東西而不能用本機(jī)本地架構(gòu)的數(shù)據(jù)。 所以一個(gè)交叉編譯工具鏈就是針對(duì)目標(biāo)架構(gòu)準(zhǔn)備的單獨(dú)安裝單獨(dú)使用的 binutils + gcc + glibc + kernel-header 的集合了。 PS:這個(gè) kernel-header 并不一定就是 Linux ,他還可以是別的系統(tǒng)核心開(kāi)發(fā)庫(kù),比如 FreeBSD 。

LINUX交叉編譯工具鏈和GCC是什么關(guān)系啊

3,怎樣檢查linux交叉工具鏈 安裝成功

配置好PATH環(huán)境變量(加入你交叉編譯工具鏈的目錄),比如你arm交叉工具鏈,可能名字叫arm-linux-gcc。執(zhí)行arm-linux-gcc -v,如果看到如上圖所示提示版本信息,基本上就算安裝成功了吧。GOOD LUCK~
1.首先通過(guò)執(zhí)行命令:# arm-linux-gcc -v 可以查看到版本信息; 2.通過(guò)查看path環(huán)境變量可以看到相關(guān)的/usr/bin:/usr/local/bin......模版中,存在你的教程編譯鏈; 如果你的環(huán)境是臨時(shí)搭建或者非臨時(shí)的。只需在~/.bashrc腳本最后加: export PATH=/usr/local/...:$ 退出文本編輯后還需使其生效: source ~/.bashrc
arm-linux-gcc -v
如果交叉編譯工具鏈的路徑已經(jīng)添加到path變量中的話(huà),直接使用... -v即可查看比如我的是arm-linux-gnueabihf-g++那么直接arm-linux-gnueabihf-g++ -v或者是--version就可以得到版本信息了。

怎樣檢查linux交叉工具鏈 安裝成功

4,什么是交叉工具鏈

交叉編譯:我的理解,是A機(jī)器上編譯生成,運(yùn)行在B機(jī)器上。兩個(gè)機(jī)子有不同的機(jī)器指令。工具鏈:可能指編譯、匯編、鏈接等一整套工具。下面摘錄一段:DIY自己的GNU交叉工具鏈(i386-arm) 嵌入式設(shè)備由于不具備一定的處理器能力和存儲(chǔ)空間,程序開(kāi)發(fā)一般用PC來(lái)完成,然后將可執(zhí)行文件下載到嵌入式系統(tǒng)中運(yùn)行。這是目前嵌入式程序開(kāi)發(fā)的不二選擇——Host/target模式。但這引發(fā)了一個(gè)問(wèn)題:由于Host和Target的處理器體系結(jié)構(gòu)不同,我們不能直接用PC上既有的程序開(kāi)發(fā)工具,必須使用跨平臺(tái)開(kāi)發(fā)工具,即在Host上生成能在Target上運(yùn)行格式的目標(biāo)文件。與在PC上進(jìn)行程序開(kāi)發(fā)類(lèi)似,嵌入式系統(tǒng)開(kāi)發(fā)也需要編譯器、鏈接器、解釋程序等。本文討論GNU跨平臺(tái)開(kāi)發(fā)工具鏈的建立,包括: ld, gas, ar, gcc, glibc.自己建立交叉編譯環(huán)境是一件很頭疼的事(處理版本的依賴(lài)性, 漫長(zhǎng)的編譯過(guò)程...),如果你不想經(jīng)歷這樣的痛苦,可以選擇網(wǎng)上編譯好了的工具鏈進(jìn)行安裝.如果你用的是Debian/Ubuntu的發(fā)行版, 推薦使用Emdebian. 如果使用uClinux, 也可安裝arm-elf-tools.關(guān)于Emdebian和arm-elf-tools的更多介紹, 情看本blog的這篇文章!

5,如何設(shè)置arm開(kāi)發(fā)板交叉編譯工具鏈

arm開(kāi)發(fā)板上使用的是嵌入式linux操作系統(tǒng),沒(méi)有kde桌面系統(tǒng)程序,而konqueror是kde中的ie瀏覽器,所以你在arm上無(wú)法查看該程序。
如何設(shè)置arm開(kāi)發(fā)板交叉編譯工具鏈1.13.6 Compile菜單按Alt+C可進(jìn)入Compile菜單, 該菜單有以下幾個(gè)內(nèi)容,如圖所示:1. Compile to OBJ:將一個(gè)C源文件編譯生成.OBJ目標(biāo)文件, 同時(shí)顯示生成的文件名。其熱鍵為 Alt+F9。2. Make EXE file:此命令生成一個(gè).EXE的文件, 并顯示生成的.EXE文件名。其中.EXE文件名是下面幾項(xiàng)之一:1) 由Project/Project name說(shuō)明的項(xiàng)目文件名。2) 若沒(méi)有項(xiàng)目文件名, 則由Primary C file說(shuō)明的源文件。3) 若以上兩項(xiàng)都沒(méi)有文件名, 則為當(dāng)前窗口的文件名。3. Link EXE file:把當(dāng)前.OBJ文件及庫(kù)文件連接在一起生成.EXE文件。4. Build all:重新編譯項(xiàng)目里的所有文件, 并進(jìn)行裝配生成.EXE文件。該命令不作過(guò)時(shí)檢查 (上面的幾條命令要作過(guò)時(shí)檢查, 即如果目前項(xiàng)目里源文件的日期和時(shí)間與目標(biāo)文件相同或更早, 則拒絕對(duì)源文件進(jìn)行編譯)。5. Primary C file:當(dāng)在該項(xiàng)中指定了主文件后, 在以后的編譯中, 如沒(méi)有項(xiàng)目文件名則編譯此項(xiàng)中規(guī)定的主C文件, 如果編譯中有錯(cuò)誤, 則將此文件調(diào)入編輯窗口, 不管目前窗口 中是不是主C文件。6. Get info:獲得有關(guān)當(dāng)前路徑、源文件名、源文件字節(jié)大小、編譯中的錯(cuò)誤數(shù)目、可用空間等信息,如圖:1.13.7 Project菜單

6,如何制定android交叉編譯工具鏈

經(jīng)常搞嵌入式開(kāi)發(fā)的朋友對(duì)于交叉編譯環(huán)境應(yīng)該并不陌生,說(shuō)白了,就是一組運(yùn)行在x86 PC機(jī)的編譯工具,可以讓你在PC機(jī)上編譯出目標(biāo)平臺(tái)(例如ARM)可識(shí)別的二進(jìn)制文件。Android平臺(tái)也提供了這樣的交叉編譯工具鏈,就放在Android的NDK開(kāi)發(fā)包的toolchains目錄下,因此,我們的Makefile文件中,只需給出相應(yīng)的編譯工具即可。廢話(huà)就先說(shuō)到這,直接上例子,我們目標(biāo)是把下面這個(gè)math.c文件編譯成一個(gè)靜態(tài)庫(kù)文件:#include int add( int a , int b ) { return a+b; } 你需要編寫(xiě)一個(gè)Makefile文件,這里假設(shè)你的Android ndk被安裝在 /opt/android/ndk 目錄下,當(dāng)然,你可以根據(jù)自己的實(shí)際情況修改Makefile中相關(guān)路徑的定義,Makefile文件示例如下: # Makefile Written by ticktick # Show how to cross-compile c/c++ code for android platform .PHONY: clean NDKROOT=/opt/android/ndk PLATFORM=$(NDKROOT)/platforms/android-14/arch-arm CROSS_COMPILE=$(NDKROOT)/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi- CC=$(CROSS_COMPILE)gcc AR=$(CROSS_COMPILE)ar LD=$(CROSS_COMPILE)ld CFLAGS = -I$(PWD) -I$(PLATFORM)/usr/include -Wall -O2 -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp LDFLAGS = TARGET = libmath.a SRCS = $(wildcard *.c) OBJS = $(SRCS:.c=.o) all: $(OBJS) $(AR) -rc $(TARGET) $(OBJS) clean: rm -f *.o *.a *.so 這里不講Makefile文件的基本原理,只說(shuō)明一下針對(duì)Android環(huán)境的Makefile文件編寫(xiě)的注意事項(xiàng)。 (1) CROSS_COMPILE 必須正確給出Android NDK編譯工具鏈的路徑,當(dāng)在目錄中執(zhí)行make命令的時(shí)候,編譯系統(tǒng)會(huì)根據(jù) CROSS_COMPILE 前綴尋找對(duì)應(yīng)的編譯命令。 (2) -I$(PLATFORM)/usr/include 由于Android平臺(tái)沒(méi)有使用傳統(tǒng)的c語(yǔ)言庫(kù)libc,而是自己編寫(xiě)了一套更加高效更適合嵌入式平臺(tái)的c語(yǔ)言庫(kù),所以系統(tǒng)頭文件目錄不能再使用默認(rèn)的路徑,必須直到Android平臺(tái)的頭文件目錄 (3) -Wall -O2 -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp 這些參數(shù)的意義網(wǎng)上基本上都有介紹,我就不一一解釋了,并不都是必須添加的,但比較常用。 編譯方法: 寫(xiě)好makefile文件,并且保存之后,就可以直接在當(dāng)前目錄下執(zhí)行make命令,編譯完成后,當(dāng)前目錄下會(huì)生成 libmath.a ,即可直接拿到Android的jni工程中和使用了。
經(jīng)常搞嵌入式開(kāi)發(fā)的朋友對(duì)于交叉編譯環(huán)境應(yīng)該并不陌生,說(shuō)白了,就是一組運(yùn)行在x86 pc機(jī)的編譯工具,可以讓你在pc機(jī)上編譯出目標(biāo)平臺(tái)(例如arm)可識(shí)別的二進(jìn)制文件。android平臺(tái)也提供了這樣的交叉編譯工具鏈,就放在android的ndk開(kāi)發(fā)包的toolchains目錄下,因此,我們的makefile文件中,只需給出相應(yīng)的編譯工具即可。廢話(huà)就先說(shuō)到這,直接上例子,我們目標(biāo)是把下面這個(gè)math.c文件編譯成一個(gè)靜態(tài)庫(kù)文件:#include int add( int a , int b ) { return a+b; } 你需要編寫(xiě)一個(gè)makefile文件,這里假設(shè)你的android ndk被安裝在 /opt/android/ndk 目錄下,當(dāng)然,你可以根據(jù)自己的實(shí)際情況修改makefile中相關(guān)路徑的定義,makefile文件示例如下: # makefile written by ticktick # show how to cross-compile c/c++ code for android platform .phony: clean ndkroot=/opt/android/ndk platform=$(ndkroot)/platforms/android-14/arch-arm cross_compile=$(ndkroot)/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi- cc=$(cross_compile)gcc ar=$(cross_compile)ar ld=$(cross_compile)ld cflags = -i$(pwd) -i$(platform)/usr/include -wall -o2 -fpic -dandroid -dhave_pthread -mfpu=neon -mfloat-abi=softfp ldflags =
文章TAG:交叉編譯工具鏈交叉編譯環(huán)境包括哪些工具它的作用是什么

最近更新

經(jīng)驗(yàn)文章排行榜