zoukankan      html  css  js  c++  java
  • 专题1-安装交叉编译器---安装交叉工具链2

    1、将压缩文件ARM-Tools.tar.gz解压,tar xvzf arm-linux-gcc-4.3.2.tgz -C / ,指定解压到根目录。

    2、为了能让/usr/local/arm/4.3.2/bin下的工具链能在哪儿都能用上,vim /root/.bashrc.

    3、在里面输入export PATH=$PATH:/usr/local/arm/4.3.2/bin,因为Linux执行某一命令,是从PATH环境变量列出的路径中去查找命令来执行!!

    4、最后使之生效source /root/.bashrc。

    注意:x86下的gcc编译器寻找头文件是从/usr/include目录下去寻找,那么arm-linux-gcc如何寻找头文件?首先,使用arm-linux-gcc --help,找到其中一个参数项-print-search-dirs,使用arm-linux-gcc  -print-search-dirs就可以显示出arm-linux-gcc要查找的头文件路径。

    把链接器脚本led.lds、源文件led.S以及Makefile给出

    1、arm-linux-gcc -g -c led.S -o led.o 编译不链接且包含调试信息

    2、arm-linux-ld -Tled.lds -o led.elf led.o 使用链接器脚本led.lds来进行链接

    3、arm-linux-objcopy -O binary led.elf led.bin 将elf格式转换为bin

    4、将生成的.bin文件烧写到开发板。

    交叉工具链

    1、交叉编译器

    arm-linux-gcc -static hello.c -o hello

    2、交叉链接器

    arm-linux-ld -Tled.lds -o led.elf led.o(注意在链接多个文件的时候可以跟上多个文件比如不止arm-linux-ld -Tled.lds -o led.elf led.o main.o 等等 “-T”表示使用链接器脚本。)

    3、elf文件工具

    arm-linux-readelf -a led.elf 其中-a是查看全部信息:包括大小端、运行平台等

    arm-linux-readelf -d led查看led文件运行时所需要的库

    4、反汇编器(在底层开发中非常有用!!!)

    arm-linux-objdump -D -S hello > dump

    记得编译文件的时候加上-g调试信息,就会生成下面的格式

    注意:gcc寻找头文件是在/usr/include/stdio.h。而arm-linux-gcc 头文件:/usr/local/arm/4.3.2/bin/

    5、文件格式转换器

    arm-linux-objcopy -O binary led.elf led.bin

    注意:arm-linux-gcc 与arm-linux-ld生成的文件都是.elf格式的,可以在Linux系统上运行,因为Linux系统里有elf解析器来解析成二进制文件来执行的,而不能直接运行于ARM上。

    Makefile文件的构成‘

    规则:用于说明如何生成目标文件

    targets : prerequisites

        command(要使用TAB空格键)

    以上 组成一个规则

    伪目标使用关键字:

    .PHONY:clean----表明clean为伪目标。

    最终目标:如果用户没有指定执行某一条规则,make会默认执行makefile中的第一条规则,而这条规则中的目标称之为最终目标。

    make +目标名字:会产生出生成的目标----执行单独规则。

    ---变量

    使用变量前:

    app1 :app1.o func1.o func2.o

        gcc app1.o func1.o func2.o -o app1

    app2: app2.o func1.o func2.o

        gcc app2.o func1.o func2.o -o app2

    使用变量后

    obj= func1.o func2.o

    app1 : app1.o $(obj)

        gcc app1.o $(obj) -o app1

    app2:app2.o $(obj)

        gcc app2.o $(obj) -o app2

    可以直接使用系统已经默认好的变量

    $^:代表所有的依赖文件

    $@:表示目标

    $<:代表第一个依赖文件

    通用规则

    %.o:%.S

    arm-linux-gcc -g -o $@ -c $^

    去回显:在命令前加上@符号(makefile文件里写)

    make命令默认使用makefile或Makefile,而工程文件都不是二者时,使用make -f 文件名

  • 相关阅读:
    Django+Bootstrap+Mysql 搭建个人博客(一)
    Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)
    微信小程序入门(六)
    微信小程序入门(五)
    微信小程序入门(四)
    微信小程序入门(三)
    微信小程序入门(二)
    遗传算法常见问题解惑
    记录使用python实现QPSO求解最大值问题时,遇到的问题
    关于JetBrain系列软件的学生授权认证和授权到期(一年)重新申请的问题
  • 原文地址:https://www.cnblogs.com/gary-guo/p/5513882.html
Copyright © 2011-2022 走看看