第01课 环境搭建及工具、概念介绍

第1课 嵌入式Linux开发环境搭建及使用,嵌入式变成基础知识

1. 安装ubuntu

按教程来安装:书、配套的开发板光盘使用手册都有说明

使用光盘上已经制作好的ubuntu9.10

 

2. 安装Windows下的配套开发工具

源码编辑查看源码工具Source Insight

远程登录/串口工具SecureCRT

文件传输工具CuteFTP

tftp服务器程序tftpboot: uboot上的tft

 

3. Linux操作示例

启动终端、远程登录

vi.gedit: vi的使用可以在google上搜

ifconfig 查看ip配置

sudo ifconfig eth1 192.168.1.3 //设置网卡

sudo ifconfig eth1 up //设置网卡

ping windows ip,ping 192.168.1.7

 

find、grep

查找名为a.c的文件:find -name “a.c”

在当前目录下搜含有abc字样的文件:grep “abc” * -nR

 

cd change dir改变目录

cd /到根目录

cd /

rm删除命令

rm ab.c删除文件

rm -rf dir_name删除目录

mkdir abcd穿件目录

ls 列出当前目录所有文件及目录

rm -rf abcd递归删除强制删除所有目录及目录下所有子目录

 

 

第01课 环境搭建及工具、概念介绍_第1张图片

gcc -o hello hello.c a.c

./hello ./指的是在当前目录下执行

 

第01课 环境搭建及工具、概念介绍_第2张图片

SECTIONS {

        . = 0x00; //当前地址为零,从零地址开始排放,排放代码段,只读数据段,data,bss

        .text          :   { *(.text) }

        .rodata ALIGN(4) : {*(.rodata)}

        .data ALIGN(4) : { *(.data) }

        .bss ALIGN(4)  : { *(.bss)  *(COMMON) }

}

lds文件指定了链接脚本,但是没指定链接顺序,Makedfile里制定链接顺序

 

*表示所有文件,这里说的所有文件是指在当前目录的源文件

CFLAGS  := -Wall -Wstrict-prototypes -g -fomit-frame-pointer -ffreestanding

all : crt0.S  leds.c

        arm-linux-gcc $(CFLAGS) -c -o crt0.o crt0.S

        arm-linux-gcc $(CFLAGS) -c -o leds.o leds.c

        arm-linux-ld -Tleds.lds  crt0.o leds.o -o leds_elf  //制定链接顺序 先crt0后leds.0

        arm-linux-objcopy -O binary -S leds_elf leds.bin

        arm-linux-objdump -D -m arm  leds_elf > leds.dis

clean:

        rm -f   leds.dis leds.bin leds_elf *.o

 

所以先排放crt0的text再排放leds的text依次排放。

 

 

理解设么是Makefile

Windows 编译 按钮

Linux 命令行,为了方便,这些命令写入一个文件,然后执行这些文件,Makefile

 

Makefile 规则

目标:依赖1 依赖2 。。。。

TAB 命令

 

 

hello:hello.c a.c

            gcc -o hello hello.c a.c

 

 

Makefile命令能被执行的条件

  1. 目标不存在  hello:hello.c a.c
  2. 依赖已更新  gcc -o hello hello.c a.c

 

hello 没有这个文件

hello.c或者a.c更新了或被修改了

 

vi Makefile编辑 Makefile

make执行Makefile

 

改良Makefile 使编译和链接分离

hello : hello.o a.o   //想生成hello,但是没有hello.o也没有a.o, 查找关于hello.o 和 a.o的规则

            gcc -o hello hello.o a.o

 

hello.o : hello.c

            gcc -o hello.o -c hello.c // -c 编译不链接

           

a.o : a.c

            gcc -o a.o -c a.c

 

这种情况下哪个文件改变了就编译哪个文件,节省编译时间。

 

Makefile 还可以改进写成通配符

 

hello : hello.o a.o

            gcc -o $@ $^

 

%.o : %.c

            gcc -o $@ -c $<

 

clean :

            rm *.o hello

 

make clean可以删除相关的所有的东西

介绍gcc命令选项

-c 编译不链接

ld, arm-linux-ld

你可能感兴趣的:(JZ2440韦东山视频教学笔记)