當前位置:首頁 » 編程軟體 » 編譯工具鏈

編譯工具鏈

發布時間: 2022-01-16 10:13:05

A. 如何更改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. 測試

B. 如何搭建stm32的編譯工具鏈

看你預裝了什麼IDE。比方ARM MDK, IAR等。
安裝好後,建議你下載STM32cube庫,裡面有基於
多種IDE的工程,現存工程,邊用變摸索。

C. 如何制定android交叉編譯工具鏈

經常搞嵌入式開發的朋友對於交叉編譯環境應該並不陌生,說白了,就是一組運行在x86 PC機的編譯工具,可以讓你在PC機上編譯出目標平台(例如ARM)可識別的二進制文件。Android平台也提供了這樣的交叉編譯工具鏈,就放在Android的NDK開發包的toolchains目錄下,因此,我們的Makefile文件中,只需給出相應的編譯工具即可。
廢話就先說到這,直接上例子,我們目標是把下面這個math.c文件編譯成一個靜態庫文件:
#include <stdio.h>
int add( int a , int b ) {
return a+b;
}
你需要編寫一個Makefile文件,這里假設你的Android ndk被安裝在 /opt/android/ndk 目錄下,當然,你可以根據自己的實際情況修改Makefile中相關路徑的定義,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文件的基本原理,只說明一下針對Android環境的Makefile文件編寫的注意事項。
(1) CROSS_COMPILE
必須正確給出Android NDK編譯工具鏈的路徑,當在目錄中執行make命令的時候,編譯系統會根據 CROSS_COMPILE 前綴尋找對應的編譯命令。
(2) -I$(PLATFORM)/usr/include
由於Android平台沒有使用傳統的c語言庫libc,而是自己編寫了一套更加高效更適合嵌入式平台的c語言庫,所以系統頭文件目錄不能再使用默認的路徑,必須直到Android平台的頭文件目錄
(3) -Wall -O2 -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp
這些參數的意義網上基本上都有介紹,我就不一一解釋了,並不都是必須添加的,但比較常用。
編譯方法:
寫好makefile文件,並且保存之後,就可以直接在當前目錄下執行make命令,編譯完成後,當前目錄下會生成 libmath.a ,即可直接拿到Android的jni工程中和使用了。

D. LINUX交叉編譯工具鏈和GCC是什麼關系啊

編譯工具鏈一般最簡化的為
binutils
+
gcc
+
glibc
+
kernel-header
組合的環境。
GCC
就是編譯器,他的輸出每次安裝只能有針對一個架構的指令輸出。如果要多個架構輸出,那就要裝多個
GCC
,所以編譯工具鏈裡面會有一個
GCC

交叉編譯就是跨架構編譯,編譯出來的程序不能在本機執行(當然有例外情況)。所以這個時候就需要交叉編譯工具鏈。
工具鏈光有
GCC
是不行的,還需要一個
binutils
的二進制連接器,以及一個最基本的目標架構的
C
庫,C
庫還需要一個目標架構的內核源代碼才能完全工作(當然不是必須的,但編譯有的時候需要)
又因為
GCC
、binutils
不能實現單軟體同時多架構輸出,所以需要單獨另裝,又加上
C
庫和內核頭文件需要目標架構的東西而不能用本機本地架構的數據。
所以一個交叉編譯工具鏈就是針對目標架構准備的單獨安裝單獨使用的
binutils
+
gcc
+
glibc
+
kernel-header
的集合了。
PS:這個
kernel-header
並不一定就是
Linux
,他還可以是別的系統核心開發庫,比如
FreeBSD

E. 如何更改ubuntu中交叉編譯工具鏈

1.下載arm-linux-gcc-3.4.1.tar.bz2到任意的目錄下,我把它下載到了我的個人文件夾里 /home/wrq
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/profil文件:
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
int main()
{
printf("Hello World!\n");
return 0;
}
執行下面的命令:
# arm-linux-gcc -o hello hello.c
源程序有錯誤的話會有提示,沒有任何提示的話,就是通過了,就可以下載到ARM目標板上運行了!接著可以輸入file hello的命令,查看生成的hello文件的類型,要注意的是生成的可執行文件只能在ARM體系下運行,不能在其於X86的PC機上運行。

F. 什麼是工具鏈

機器上。兩個機子有不同的機器指令。
工具鏈:可能指編譯、匯編、鏈接等一整套工具。

下面摘錄一段:
DIY自己的GNU交叉工具鏈(i386-arm)
嵌入式設備由於不具備一定的處理器能力和存儲空間,程序開發一般用PC來完成,然後將可執行文件下載到嵌入式系統中運行。這是目前嵌入式程序開發的不二選擇——Host/target模式。但這引發了一個問題:由於Host和Target的處理器體系結構不同,我們不能直接用PC上既有的程序開發工具,必須使用跨平台開發工具,即在Host上生成能在Target上運行格式的目標文件。

與在PC上進行程序開發類似,嵌入式系統開發也需要編譯器、鏈接器、解釋程序等。本文討論GNU跨平台開發工具鏈的建立,包括: ld, gas, ar, gcc, glibc.

自己建立交叉編譯環境是一件很頭疼的事(處理版本的依賴性, 漫長的編譯過程...),如果你不想經歷這樣的痛苦,可以選擇網上編譯好了的工具鏈進行安裝.如果你用的是Debian/Ubuntu的發行版, 推薦使用Emdebian. 如果使用uClinux, 也可安裝arm-elf-tools.

關於Emdebian和arm-elf-tools的更多介紹, 情看本blog的這篇文章!

G. ubuntu怎麼安裝交叉編譯工具鏈

. 解壓 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

H. 在linux系統下怎麼用編譯工具鏈編譯源代碼

一般是用的GNU的那一套工具鏈

比如你寫了一個源碼為main.c

然後gcc main.c即可,生成的a,out為可執行的ELF文件。

如果你需要了解GCC的詳解資料,最好讀一下它的man pages

I. liunx下編譯的工具鏈有什麼作用

工具鏈指的是開發中要用到的一系列的工具,包括GCC,GDB、BinUtils等起到鑲嵌作用等

J. 交叉工具鏈編譯過程

android源碼有4G,怎麼發。我從官網上下載要8個小時。
編譯Android系統源碼需要以下工具:git工具,repo工具,java sdk,主機編譯工具等
我的實驗環境是ubuntu 10.10,步驟如下
1.打開終端輸入
alex@alex-Linux:~$ sudo -i
root@alex-Linux:~$ apt-get install git-core flex bison gperf libesd0-dev zip
root@alex-Linux:~$ apt-get install libwxgtk2.6-dev zlib1g-dev build-essential libstdc++5
root@alex-Linux:~$ apt-get install tofrodos x-dev libx11-dev libncurses5-dev
root@alex-Linux:~$ apt-get install sun-java5-jdk
如果在上述過程中提示無法找到源,請參閱在源配置中添加ubuntu9.04源
2.編譯Android系統源碼官方推薦使用Java5.如果本機安裝了Java6,應將其配置成java5.需要卸載java6
alex@alex-Linux:~$ apt-get remove sun-java6-jdk
3.配置java環境
root@alex-Linux:/etc/apt# update-alternatives --config java
選擇 路徑 優先順序 狀態
------------------------------------------------------------
* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自動模式
1 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java 53 手動模式
2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手動模式
3 /usr/lib/jvm/java-6-sun/jre/bin/java 63 手動模式
選擇1
4.Android系統源碼在編譯過程中需要編譯主機工具,所以還需要主機打gcc工具鏈,而對於編譯目標機文件,ANdroid在prebuilt目錄中集成了gcc交叉編譯工具鏈。repo是對調用git打封裝打工具,安裝repo
alex@alex-Linux:~$ sudo -i
root@alex-Linux:~# cd /bin
root@alex-Linux:/bin# curl > ~/bin/repo
如果提示curl未安裝,請輸入sudo apt-get install curl
設置bin/repo的可執行許可權alex@alex-Linux:~/bin$ chmod a+x ~/bin/repo
5.下載Android源碼 代碼庫打路徑為android.git.kernel.org 可以通過網頁瀏覽代碼庫的內容。在用戶主目錄新建androidsource進入該目錄
alex@alex-Linux:~/androidsource$ repo init-u git://android.git.kernel.org/platform/manifast.git
當出現Your Name [xxx]:
Your Email[[email protected]]:時輸入相應用戶名和Email,經過repo init後,執行repo sync 下載Android系統源文件
時間很長,請耐心等待。

熱點內容
循跡小車演算法 發布:2024-12-22 22:28:41 瀏覽:82
scss一次編譯一直生成隨機數 發布:2024-12-22 22:04:24 瀏覽:956
嫁接睫毛加密 發布:2024-12-22 21:50:12 瀏覽:975
linuxbin文件的安裝 發布:2024-12-22 21:46:07 瀏覽:798
vlcforandroid下載 發布:2024-12-22 21:45:26 瀏覽:664
電腦做網關把數據發送至伺服器 發布:2024-12-22 21:44:50 瀏覽:432
新華三代理什麼牌子的伺服器 發布:2024-12-22 21:33:21 瀏覽:342
歡太會員密碼是什麼 發布:2024-12-22 20:57:28 瀏覽:74
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:126
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:301