最新全志R11_Tina_2.5_交叉編譯器介紹

SZX511發表於2019-06-19

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章