嵌入式Linux应用开发

嵌入式Linux应用开发嵌入式 Linux 应用开发

ubuntu的目录

在这里插入图片描述

怎么设置PATH?

在这里插入图片描述

Linux的命令提示符

在这里插入图片描述

cd ~ 表示用户 家目录

在这里插入图片描述

Linux的相对路径

在这里插入图片描述

Linux的man命令

在这里插入图片描述

Linux的vi编辑器的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述




Linux的which和whereis命令

在这里插入图片描述

Linux的压缩命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述










Makefile

Makefile的核心——规则:
目标 : 依赖1 依赖2 …
[TAB] 命令




语法:
a. 通配符:%.o
$@ 表示目标
$< 表示第1个依赖文件
$^ 表示所有依赖文件








b. 假想目标: .PHONY

//makefile例子 test:a.o b.o c.o gcc -o test $^ %.o:%.c gcc -c -o $@ $< clean: rm *.o test .PHONY:clean 
A := xxx #A的值即刻确定,在定义时即确定 B = xxx #B的值使用到时才确定 := #即时变量 = #延时变量 ?= #延时变量,如果是第一次定义才起效,如果在前面该变量已定义则忽略这句 += #附加,它是即时变量还是延时变量取决于前面的定义 //makefile例子 A := $(C) B = $(C) C = abc all: @echo A = $(A) @echo B = $(B) C += 123 

Makefile函数

$(foreach var,list,text) 遍历 $(filter pattern...,text) 在text中取出符合pattern格式的值 $(filter-out pattern...,text) 在text中取出不符合pattern格式的值 $(wildcard pattern) pattern定义了文件名的格式,wildcard取出其中存在的文件 $(patsubst pattern,replacement,$(var)) 从列表中取出每一个值,如果符合pattern,则替换成replacement 

改进:支持头文件依赖

gcc -M c.c //打印出依赖 gcc -M -MF c.d c.c //把依赖写入文件c.d gcc -c -o c.o c.c -MD -MF c.d //编译c.o,把依赖写进文件c.d 

在这里插入图片描述

// Makefile说明 本程序的Makefile分为3类: 1.顶层目录的Makefile 2.顶层目录的Makefile.build 3.各级子目录的Makefile 一、各级子目录的Makefile: 它最简单,形式如下: EXTRA CFLAGS := CFLAGS_file.o := obj-y += file.o obj-y += subdir/ “obj-y+=file.o” 表示把当前目录下的file.c编进程序里, "obj-y+= subdir/” 表示要进入subdir这个子目录下去子找文件来编进程序里,是哪些文件由subdir目录下的Makefile决定。 "EXTRA_CFLAGS", 它给当前目录下的所有文件(不含其下的子目录)设置额外的编译选项,可以不设置 "CFLAGS_xxx.o", 它给当前目录下的xxx.c设置它自己的编译选项,可以不设置 注意: 1."subdir/"中的斜杠"/"不可省略* 2.顶层Makefile中的cFLAGs在编译任意一个.c文件时都会使用 3.CFLAGS EXTRA_CFLAGS CFLAGS_xxx.o三者组成xxx.c的编译选项 二、顶层目录的Makefile: 它除了定义obj-y来指定根目录下要编进程序去的文件、子目录外, 主要是定义工具链前缀CROSS_COMPILE, 定义编译参数CFLAGS, 定义链接参数LDFLAGS, 这些参数就是文件中用export导出的各变量。 三、顶层目录的Makefile.build: 这是最复杂的部分,它的功能就是把某个目录及它的所有子目录中、需要编进程序去的文件都编译出来,打包为built-in.o 详细的讲解请看视频。 四、怎么使用这套Makefile: 1.把顶层Makefile,Makefile.build放入程序的顶层目录 在各自子目录创建一个空白的Makefile 2.确定编译哪些源文件 修改顶层目录和各自子目录Makefile的obj-y: obj-y += xxx.o obj-y += yyy/ 这表示要编译当前目录下的xxx.c,要编译当前目录下的yyy子目录 3.确定编译选项、链接选项 修改顶层目录Makefile的CFLAGS,这是编译所有.c文件时都要用的编译选项; 修改顶层目录Makefile的LDFLAGS,这是链接最后的应用程序时的链接选项; 修改各自字目录下的Makefile: "EXTRA_CFLAGS", 它给当前目录下的所有文件(不含其下的子目录)设置额外的编译选项,可以不设置 "CFLAGS_xxx.o", 它给当前目录下的xxx.c设置它自己的编译选项,可以不设置 4.使用哪个编译器? 修改顶层目录Makefile的CROSS_COMPILE,用来指定工具链的前缀(比如arm-linux-) 5.确定应用程序的名字: 修改顶层目录Makefile的TARGET,这是用来指定编译出来的程序的名字 6.执行"make"来编译,执行"make clean"来清除,执行"make distclean"来彻底清除 

文件I/O 读写文件

文件从哪里来?

  1. 磁盘、flash、SD卡、U盘
    对于硬件上真实的文件需要挂载才能访问到,要先mount

  2. Linux提供的虚拟文件系统,也要先mount
  3. 特殊文件 /dev/xxx 设备节点

Framebuffer应用编程

在这里插入图片描述
bpp:bits per pixel 每个像素用多少位来表示它的颜色
在这里插入图片描述
首地址+offset,就可以确定这个地址在Framebuffer的哪里
在这里插入图片描述








ASCII字符点阵显示

在这里插入图片描述
实现代码

汉字区位码

HZK16中是以GB2312编码值来查找点阵的,以“中”字为例,它的编码值是“0xd6-0xd0”,其中的0xd6表示“区码”,表示在哪一个区:第“0xd6–0xa1”区;其中的0xd0表示“位码”,表示它是这个区里的哪一个字符:第“0xd0-0xa1”个。每一个区有94汉字。区位码从0xa1而不是从0开始,是为了兼容ASCII码。

  1. 编译程序时去哪找头文件?
    系统目录:就是交叉编译工具链里的某个include目录;
    也可以自己指定:编译时用“-I dir”选项指定。




  2. 链接时去哪找库文件?
    系统目录:就是交叉编译工具链里的某个lib目录;
    也可以自己指定:链接时用“-L dir”选项指定。




  3. 运行时去哪找库文件?
    系统目录:就是板子上的/lib、/usr/lib目录;
    也可以自己指定:运行程序用环境变量LD_LIBRARY_PATH指定。




  4. 运行时不需要头文件,所以头文件不用放到板子上

常见错误的解决方法
1.头文件问题
编译时找不到头文件。在程序中这样包含头文件:#include-

对于尖括号里的头文件,去哪里找它?

系统目录:就是交叉编译工具链里的某个include目录;
也可以自己指定:编译时用“.-I dir”选项指定。
怎么确定“系统目录”?
执行下面命令确定目录:













echo ‘main() {}’ | arm-linux-gcc -E -v –

echo ‘main() {}’ | arm-linux-gcc -E -v –

error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directorye 
export LD_LIBRARY_PATH=/xxx_dir ; ./test 或 LD_LIBRARY_PATH=/xxx_dir ./test 

在这里插入图片描述

输入系统框架

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217740.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:52
下一篇 2026年3月18日 上午8:52


相关推荐

  • SM4加密运算_数据加密标准des采用的密码类型是

    SM4加密运算_数据加密标准des采用的密码类型是javaSM4加密运算自己的理解:sm4加密,其实就是将字符串转成byte数组,再设置一个与解密相同的字符串,将byte的数据再转成二级制的数据,进行异或的运算,得到一组没有规则的字符串!案例上面是一些算法下面是应用方法这是自己的认知,有什么不同建议可以留言,XXXX是自己加密的字符串…

    2022年10月6日
    5
  • snmpwalk命令常用方法

    snmpwalk命令常用方法SNMPWALK是一个通过SNMPGET-NEXT类型PDU,实现对目标AGENT的某指定MIB分支信息进行完整提取输出的命令工作。命令行:[html] viewplain copysnmpwalk [选项] agent [oid]  选项参数:由于SNMP协议中,不同的协议版本存在不同的参数选项,以下参数按协议分开说明。

    2022年6月29日
    32
  • sigmoid函数求导—-简单手写推导过程

    sigmoid函数求导—-简单手写推导过程总结 数学知识要补啊 欠的债总要还的 nbsp

    2026年3月17日
    2
  • ASPCMS_net开源项目

    ASPCMS_net开源项目1.We7CMS【做的还不错,需要保留版权】We7CMS是由西部动力开发的一款充分发掘互联网Web2.0(如博客、RSS等)的信息组织优势,将其理念利用到政府企事业网站的构建、组织、管理中的网站建设和管理方面的产品。系统目标:叫创建网站变成一种简单的艺术创作,简单如创建博客。系统特点简单至上;“一看就会”是我们的创作理念,如果在哪里您看了不会用,请您告诉我们。潜力无限;来自

    2022年9月30日
    5
  • 在计算机中1 KB等于多少字节,字节、kb、MB、GB 等单位怎么换算的?1M等于多少kb,1g等于多少kb?…[通俗易懂]

    在计算机中1 KB等于多少字节,字节、kb、MB、GB 等单位怎么换算的?1M等于多少kb,1g等于多少kb?…[通俗易懂]字节、kb、MB、GB等单位怎么换算的?1M等于多少kb,1g等于多少kb?我们查看文件属性时可以看到很多文件和大小是以kb来显示的,很多朋友都知道电脑中文件大小、容量等采用的是字节、kb、MB、GB等单位,那么你知道它们之间怎么换算的吗,如1M等于多少kb,1g等于多少kb,下面小编就和大家一起来分享下相关知识。1M等于多少kb?1MB=1024KB=1048576字节1G等于多少KB?1G=…

    2022年5月25日
    88
  • 如何用人工智能大模型,进行作业批改?

    如何用人工智能大模型,进行作业批改?

    2026年3月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号