zoukankan      html  css  js  c++  java
  • 全志R11交叉编译器灵活使用

    1. 目录结构 
    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 工具等)

    2. 使用例子

    如果想要在 Tina 源码上添加自己的应用,可以参考《Tina Linux 系统介绍》中的“创建和移植软件包”,这种方法不需要对编译器的路径、编译选项等进行设置,同时也方便开发者对软件包进行管理,建议使用该方法。

    如果需要在 Tina 源码之外单独编译应用,则需要设置 Tina交叉编译工具链路径,下面是编译一个helloworld 的例子:

    目录结构:

    http://bbs.16rd.com/thread-476967-1-1.html

    ├── helloworld

    ├── main.c

    └── Makefile

    main.c:

    #include <stdio.h>

    int main(void)

    {

    printf("Hello World! ");

    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,将它拷贝到小机端后即可运行。

  • 相关阅读:
    朴素贝叶斯分类<转载>
    SVM算法
    八大排序算法
    中文分词算法
    常用mvn 设置版本号命令
    关于object的wait和notity
    好用的技术博客列表
    相关技术博客
    mysql 锁-比较详细、深入的介绍
    eclipse如何配置tomcat运行web项目时省略项目名称
  • 原文地址:https://www.cnblogs.com/hanrp/p/12119200.html
Copyright © 2011-2022 走看看