最新全志R11_Tina_2.5_交叉編譯器介紹
2. 目錄結構
Tina 交叉編譯器是預先編譯好的,目錄為:
tina/prebuilt/gcc
具體目錄結構如下:
.├── aarch64 (詳見①)
│ ├── aarch64-toolchain.txt
│ ├── toolchain-sunxi-glibc
│ │ ├── LICENSE
│ │ ├── README.TOOLCHAIN
│ │ ├── toolchain
│ │ │ ├── aarch64-openwrt-linux -> aarch64-openwrt-linux-gnu
│ │ │ ├── aarch64-openwrt-linux-gnu
│ │ │ ├── bin
│ │ │ ├── etc
│ │ │ ├── include
│ │ │ ├── info.mk
│ │ │ ├── lib
│ │ │ ├── lib32 -> lib
│ │ │ ├── lib64 -> lib
│ │ │ ├── libexec
│ │ │ ├── sbin
│ │ │ ├── share
│ │ │ └── var
│ │ └── version.mk
│ └── toolchain-sunxi-musl
│ ├── LICENSE
│ ├── README.TOOLCHAIN
│ ├── toolchain
│ │ ├── aarch64-openwrt-linux -> aarch64-openwrt-linux-musl
│ │ ├── aarch64-openwrt-linux-musl
│ │ ├── bin
│ │ ├── include
│ │ ├── info.mk
│ │ ├── lib
│ │ ├── lib32 -> lib
│ │ ├── lib64 -> lib
│ │ ├── libexec
│ │ └── share
│ └── version.mk
├── arm (詳見②)
│ ├── arm-toolchain.txt
│ ├── toolchain-sunxi-arm9-glibc
│ │ ├── LICENSE
│ │ ├── README.TOOLCHAIN
│ │ ├── toolchain
│ │ │ ├── arm-openwrt-linux -> arm-openwrt-linux-gnueabi
│ │ │ ├── arm-openwrt-linux-gnueabi
│ │ │ ├── bin
│ │ │ ├── etc
│ │ │ ├── include
│ │ │ ├── info.mk
│ │ │ ├── lib
│ │ │ ├── lib32 -> lib
│ │ │ ├── lib64 -> lib
│ │ │ ├── libexec
│ │ │ ├── sbin
│ │ │ ├── share
│ │ │ └── var
│ │ └── version.mk
│ └── toolchain-sunxi-arm9-musl
│ ├── LICENSE
│ ├── README.TOOLCHAIN
│ ├── toolchain
│ │ ├── arm-openwrt-linux -> arm-openwrt-linux-muslgnueabi
│ │ ├── arm-openwrt-linux-muslgnueabi
│ │ ├── bin (詳見③)
│ │ ├── include (詳見④)
│ │ ├── info.mk
│ │ ├── lib (詳見⑤)
│ │ ├── lib32 -> lib
│ │ ├── lib64 -> lib
│ │ ├── libexec
│ │ └── share
│ └── version.mk
└── host (詳見⑥)
└── host-toolchain.txt
詳註:
① gcc/linux-x86/aarch64 是小機為 64 位的編譯器目錄;
② gcc/linux-x86/arm 是小機為 32 位的編譯器目錄(R11是 32 位機器);
③ bin 目錄:存放交叉編譯工具,包括 gcc, g++, ar, nm, objdump 等。
gcc: C 交叉編譯器;
g++: C++交叉編譯器;
ar: 建立靜態連結庫;
ld: 聯結器,將目標檔案連結為可執行程式;
objdump: 檢視目標檔案或者執行檔案的構成;
nm: 列出目標檔案的符號;
④ include 目錄:存放編譯應用程式時程式包含的標頭檔案,如 stdio.h 等
⑤ lib 目錄:存放編譯器相關的庫,如 libc 庫
⑥ host 目錄:存放 host 端編譯器相關目錄(暫時未使用,目前 host 端使用的是本地 gcc 工具等)
3. 使用例子
如果想要在 Tina 原始碼上新增自己的應用,可以參考《Tina Linux 系統介紹》中的“建立和移植軟體包”,這種方法不需要對編譯器的路徑、編譯選項等進行設定,同時也方便開發者對軟體包進行管理,建議使用該方法。
如果需要在 Tina 原始碼之外單獨編譯應用,則需要設定 Tina交叉編譯工具鏈路徑,下面是編譯一個helloworld 的例子:
目錄結構:
├── helloworld
├── main.c
└── Makefile
main.c:
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
Makefile:
CROSS_COMPILE_PATH=/tina/prebuilt/gcc/linux-x86/arm/toolchain-sunxi/toolchain/bin
CROSS_COMPILE=$(CROSS_COMPILE_PATH)/arm-openwrt-linuxCC=$(CROSS_COMPILE)gcc
all:
$(CC) -o helloworld main.c
CROSS_COMPILE_PATH 需要寫自己的編譯器路徑。
在當前目錄下執行 make 即可進行編譯,編譯成功會生成可執行程式 helloworld,將它複製到小機端後即可執行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529038/viewspace-2648062/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全志最新處理器平臺-R311晶片介紹晶片
- i.MX6ULL開發板原始碼交叉編譯器介紹原始碼編譯
- .NET 編譯器(”Roslyn“)介紹編譯ROS
- 全網可用交叉編譯工具鏈大全編譯
- NEO Python編譯器介紹Python編譯
- 編譯器的自展和自舉、交叉編譯編譯
- 交叉編譯編譯
- lazarus交叉編譯編譯
- Numba編譯器的介紹與應用編譯
- 交叉編譯入門編譯
- go 交叉編譯,部署Go編譯
- 淺談交叉編譯編譯
- ubuntu下編譯交叉編譯工具鏈Ubuntu編譯
- 精讀《手寫 SQL 編譯器 - 文法介紹》SQL編譯
- 精讀《手寫 SQL 編譯器 – 文法介紹》SQL編譯
- 全志F1C300多媒體晶片處理器介紹晶片
- 全志R16 tina SDK下載說明,全志R16編譯環境編譯
- 交叉編譯和 RPC編譯RPC
- wifidog交叉編譯WiFi編譯
- android NDK 交叉編譯Android編譯
- golang初學:交叉編譯Golang編譯
- Go編譯器簡介【譯】Go編譯
- 全棧交叉編譯X86完成過程經驗分享全棧編譯
- Rust 交叉編譯與條件編譯總結Rust編譯
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- 全志A10s處理器怎麼樣?A10s晶片引數介紹晶片
- 簡要介紹編譯器工作過程的11步編譯
- 全志A40i開發板編譯環境的搭建編譯
- Go跨平臺交叉編譯Go編譯
- linux與windows交叉編譯LinuxWindows編譯
- 交叉編譯mupdf1.15.0編譯
- Go - armv7 交叉編譯Go編譯
- 交叉編譯和交叉除錯環境搭建及使用編譯除錯
- (ecj)Eclipse的Java編譯器分析之一——ecj介紹EclipseJava編譯
- RocketMQ--原始碼編譯和介紹MQ原始碼編譯
- 全志處理器,全志A40i晶片引數分享晶片
- Go語言交叉編譯工具goxGo編譯
- protobuf 的交叉編譯使用(C++)編譯C++