Linux应用开发基础知识笔记

Linux应⽤层开发 阅读详情

Linux应用开发基础知识

第一章 GCC编译器的使用

1.1 GCC编译过程

  • .c文件的编译经过

    注:语法错误是在编译过程发现的

1.2 常用编译选项

  • 常用的编译选项

  • 当编译多个文件时

    注:编译多个文件,且需要修改某一个文件时,推荐第二种方式。

  • 头文件、库文件、运行时找头文件的路径

    注:要么系统指定的目录,要么自己指定目录。找不到头文件时,解决方案:将头文件移入指定目录或者指定目录。

  • 其它好用选项

第二章 Makefile 的使用

2.1 核心规则

  • 规则

    注:根据文件时间去判断是否新。

  • 实例

    注:

    1. 先执行第一条语句,如果没有目标文件,执行二三条创建文件,然后建立连接
    2. 当依赖文件有变动时,重新执行第一条语句,假设a.c发生变化,执行第二条语句,发现依赖文件a.c比a.o新,重新执行该语句,生成新的a.o文件,b.c未发生变化,不执行。

2.2 语法

  • 语法

    注:#代表注释。

  • 通配符,假想目标举例

    注:假想目标,防止目录中有文件和命令clean重名。

  • 变量举例

    注:该例中可以在命令行中传入D的值,这样 ?= 就不起作用。

2.3 Makefile函数

  • 函数

    注:第一个函数,对于list中的每一个变量执行text公式(使用$引用函数)。

  • 格式

2.4 通用Makefile的使用

  • 使用规则

  • 演绎过程

    注:./ 点表示当前目录,/表示当前目录下的这个文件。

第三章 Linux系统编程

3.1 文件从哪来

  • where

    注:Linux内核提供的虚拟文件也许先挂载才能访问。

  • 驱动程序种类

    注:两类驱动程序:char(字符)类驱动,block(块)类驱动程序,第一个数字是主设备号,表示哪一个驱动,第二个数字是次设备号,表示驱动当中的哪一个硬件。

3.2 怎么访问文件

  • 通用的IO模型:open/read/write/lseek/close
  • 不是通用的函数:ioctl/mmap

3.3 怎么知道这些函数的用法

  • Linux下有三大帮助方法查看函数用法:help/man/info

  • help

    ls --help //用于查看某个命令的用法
    
  • man:既可以查看某个命令的用法,还可以查看函数的详细介绍。

    man 2 open //数字表示有好几个man手册
    

    注:快捷键:f 往前翻一页;b 往后翻一页;q 退出。

3.4 系统调用函数怎么进入内核

  • 应用层怎么进入内核

    注:swi(ARMcpu32位),svc(ARMcpu64位),glibc会通过触发CPU异常(3种方式)进入内核,触发异常时传入不同参数给内核,内核就知道要调用open/read函数。

  • 系统open/read会做什么事情

    注:对于字符设备,操作的是驱动程序,会通过主设备号来寻找驱动;普通文件,以FAT/EXT4等格式保存在块设备上。

    open:首先分辨文件类型,对于普通文件,会通过FAT32/EXT4等其他格式的文件系统的驱动代码,来寻找打开文件,这个文件是最终保存在某个块设备的,FAT32/EXT4等这些代码最终会调用到块设备驱动程序;如果是字符设备,会通过主设备号在内核里面找到驱动,然后以驱动来操作硬件。

AT32/EXT4等其他格式的文件系统的驱动代码,来寻找打开文件,这个文件是最终保存在某个块设备的,FAT32/EXT4等这些代码最终会调用到块设备驱动程序;如果是字符设备,会通过主设备号在内核里面找到驱动,然后以驱动来操作硬件。

read:如果是普通文件,涉及到文件系统,使用文件系统的代码来读块设备;如果是字符设备,会调用驱动程序提供的读函数来访会设备的信息。

【嵌入式Linux笔记】第三篇:Linux应用开发基础(上) 本篇致力于记录Linux应用开发的相关基础知识,为Linux应用开发工作奠定基础。知识资源主要来源于百问网韦东山老师视频与开发手册。若存在版权问题,请联系删除。 阅读详情

相关推荐

Linux 应用开发流程详细笔记

主要用于智能仓库,linux应用,无线连接,摄像头,灯光调节。步进电机。LCD液晶屏。系统实现了用web进行及时查看信息。

最全Linux应用开发解析(持续更新)

最全Linux应用开发解析(持续更新)

拉依达不拉跨的博客 7135

linux应用程序开发,读书笔记

linux,基本使用,i/o,进程,线程,网络编程

Linux应用程序开发经验

• 要学会Linux编程,必须得先学会用Linux,也就是要在Linux命令行环境下“生存”下来 • 给一台主机,能够在上面装一个操作系统(比如Ubuntu18.04或者其他版本) • 给一台Linux服务器,能够熟练地用起来 • 或者在Win10下,熟练使用WSL2 • 安装WSL2 • 基于WSL2环境下安装ubuntu 16.04,或ubuntu 18.04 • 基于WSL2+ubuntu,搭建应用程序的交叉编译环境 • 什么叫熟练地用起来?原来在Windows上干啥,在Linux上也能干: • 新建

wcq0818的博客 6978

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 340

烽火HG680-LC刷机后体验:当贝纯净桌面+讯飞语音,老盒子秒变智能电视的折腾记录

本文详细记录了烽火HG680-LC机顶盒刷机后的使用体验,通过安装当贝纯净桌面和讯飞语音助手,老盒子焕发新生,实现无广告、快速响应的智能电视功能。文章对比了刷机前后的性能差异,分享了影音播放、语音控制等实用功能,并提供了ADB调试和问题解决的实用技巧,帮助用户将闲置的运营商盒子变身为高性能的智能影音中心。

weixin_30292843的博客 471

【学习记录】从0开始的Linux学习之旅——应用开发(helloworld)

Linux操作系统通常是基于Linux内核,并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程,具有强大的网络功能和良好的兼容性。本文主要讲述如何在linux系统上进行应用开发。

知识噬元兽的博客 2876

红帽RHCE考试下午-RHCE (RH294)任务概览[2021最新版]

RH294任务概览 考试时间4个小时,6台虚拟机,15道题 原来通过脚本或者集群做的题现在都需要使用playbook实现 考试时大概有6台虚拟服务器,都已经做好了互相的免密 做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证 考试时需要将6台虚拟服务器在考试环境全部开启,物理机界面点击左侧按钮启动 考试时Ansible所有playbook都放在普通用户目录中且都以普通用户执行 注意:考试时一定注意要求将playbook放在哪个用户的家目录中,就需要用指定的户登录做题!

SunMy的博客 5619

Linux应用开发

Linux应用开发涉及到多个方面,包括Web开发、数据库、编译工具等。本篇博客介绍了一些常见的Linux开发工具和框架,如Apache、Nginx、PHP、Python、MySQL、PostgreSQL、MongoDB、gcc和make等。掌握这些工具可以使Linux应用开发更加高效和便捷,为开发者提供更多选择和灵活性。

qq_62599387的博客 1140

JSP期末考试复习习题及答案

以下习题是对于平时课堂小测的整理,如有错误敬请指正! 欢迎一起交流~ 预祝各位小伙伴们考试顺利! Test1 一. 单选题 – 1.(单选题)当用户请求jsp页面时,JSP引擎就会执行该页面的字节码文件响应客户的请求,执行字节码文件的结果是() A. 发送一个JSP源文件到客户端 B. 发送一个Java文件到客户端 C. 发送一个HTML页面到客户端 D. 什么都不做 – 2.(单选题)下列动态网页和静态网页的根本区别描述错误的是( D) A. 静态网页服务器端返回的HTML文件是事先存储好的 B. 动.

技术小白 2万+

Xilinx UltraScale+系列FPGA实现USB3.0 DEV 设备 部分原理图+代码分享

Zynq UltraScale+ MPSoC 系列是 Xilinx 新一代 Zynq 平台。在 FPGA 里有完整的 ARM 处理(PS),包含了四核或双核 Cortex-A53 处理器 ,处理器子系统中有DDR内存控制器等大量的外设,在FPGA中完全独立于可编程逻辑单元(PL)如果暂时没有用到PL部分,PS也能单独工作,相当于可以当成一个ARM来用了(以前的不行)。 ARM也包含USB3.0控制器,这是实现USB3.0DEV的关键,根据官方手册(ug1085)描述,USB主(Host)从(Device)

Pierre 1万+

嵌入式Linux应用开发基础知识 - 使用open函数创建文件 笔记

本课程深入讲解了Linux中open系统调用用于文件创建和权限控制的高级用法。核心在于理解O_CREAT和O_TRUNC标志的行为差异:前者负责创建,后者负责清空。最关键的知识点是文件权限的设定机制——用户通过mode参数指定的权限并非最终结果,必须经过系统umask的过滤。umask作为安全屏障,默认会屏蔽掉如其他用户写权限等高风险设置,最终权限按计算。open可以设置新文件的初始权限,但无法突破umask的限制,也无法修改已有文件的权限。这是Linux文件系统安全性的重要基础。

weixin_43618098的博客 763

在Ubuntu系统中安装和使用wxPython进行Python图形用户界面(GUI)开发

在本文中,我将向您展示如何在Ubuntu系统上安装和使用wxPython,并提供一些示例代码来帮助您开始使用这个强大的工具。在MyFrame的构造函数中,我们创建了一个wx.Panel和一个按钮,并将按钮的点击事件绑定到一个自定义的方法on_button_click上。最后,我们创建了一个wx.App的实例,创建了一个MyFrame对象并显示它,最后通过调用app.MainLoop()启动应用程序的主事件循环。这只是一个简单的示例,但它演示了如何使用wxPython创建一个基本的GUI应用程序。

qq_37934722的博客 1040

2022.09.25嵌入式Linux应用开发基础知识(韦东山补充笔记)

如上面6.常用的编译方法中,虽然在test2中用-L、-l指定了链接的库,但是这不是运行时的库,运行和链接是两个不同的概念,因区别对待。下面这种直接编辑clean的操作是不正确的,如下面图2所示,当创建一个clean 的文件时,就不会执行“clean”的操作。一般情况下,我们常说的编译包括:预处理、编译(代码错误是在此阶段发现的)、汇编三部分,有时候又包括:预处理、编译、汇编、链接四部分。2、在编译的时候加上- v 他会列出去查找编译时候的步骤,如:gcc -c -o main.o main.c -v。

weixin_44737233的博客 716

复合材料成型仿真案例大全|覆盖模压 / RTM / 固化 / SMC,实操步骤直接抄

本文整理了一套完整的PAM-COMPOSITE复合材料成型仿真案例合集,涵盖模压、RTM、固化变形、SMC四大核心工艺,包含6个实操案例和1个全流程衔接案例。每个案例都配有详细的操作步骤、核心要点和缺陷排查方法,适用于不同水平的工程师和研究人员。案例内容源自实际项目,可直接复用,帮助用户快速掌握复合材料成型仿真的关键技术,解决褶皱、纤维堆积、气泡残留等常见问题,实现从铺层设计到强度校核的全流程仿真闭环。特别针对热固性/热塑性材料差异、RTM衍生工艺、链式仿真等难点提供了专项解决方案。

源代码杀手的博客 320

人体红外传感器HC-SR501

本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。

weixin_43772611的博客 1万+

Linux I/O操作基础知识(韦东山《嵌入式linux应用开发完全手册》学习笔记)

app层的open函数调用glibc层的weak_alias (__libc_open, open)。`weak_alias (__libc_open, open)` 是 GNU C Library (glibc) 中常用的宏,用来创建函数的弱符号别名。它的主要作用是将一个函数名(比如 `__libc_open`)定义为另一个函数名(比如 `open`)的别名,并且这个别名是“弱的”,意味着它可以被其他强符号所覆盖。

weixin_67635760的博客 1081

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

2022.09.26嵌入式Linux应用开发基础知识(韦东山补充笔记

UNICODE 仍然向下兼容ASCII,但是对于其他字符会有对应的数值,比如对于“中”、“笢”,它们的数值分别是:0x4e2d、0x7b22UNICODE 中的数值范围是0x0000 至0x10FFFF,有1,114,111 即100 多万个数值,可以表示100 多万个字符,足够地球人使用了。Framebuffer中保存着一帧图像的每一个像素颜色值,假设LCD的分辨率是1024x768,每一个像素的颜色用32位来表示,那Framebuffer的大小就是:1024x768x32/8=3145728字节。

weixin_44737233的博客 404

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Linux应用开发学习笔记(一)

linux应用开发笔记

zhangjiahao_zjh的博客 871

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

嵌入式Linux应用开发-基础知识及GCC 编译器的使用

要编译出能在 ARM 平台上运行的程序,必须使用交叉编译工具 xxx-gcc、xxx-ld 等(不同版本的编译器的前缀不一样,比如 arm-linux-gcc),下面分别介绍。链接就是将上步生成的 OBJ 文件和系统库的 OBJ 文件、库文件链接起来,最终生成了可以在特定平台运行的可执行文件,用到的工具为 ld 或 collect2。多数情况的多数机器上,可以看见,除了 main.o、sub.o 两个文件外,还链接了启动文件 crt1.o、crti.o、crtend.o 、crtn.o,

华为奋斗者精神 2931

【linux】Linux基础知识学习笔记

命令:即Linux操作指令,是系统内置的程序。本体就是一个个的二进制可执行程序,和windows里的.exe是一个意思。通过which可以查具体位置。例如which cd。命令行:即Linux中断,提供命令执行页面。环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。env命令即可查看当前系统中记录的环境变量环境变量是一种KeyValue型结构,即名称和值envLinux环境变量可以用户自行设置,其中分为:export 变量名=变量值。

xifan的博客 4378

Linux应用开发自学之路

  前言         在 「关于我 」那篇博文里,朋友们应该知道了我不是科班出身,是由机械强行转行到Linux应用开发方向。下面我就详细向大家介绍自己这一路上的转行历程,希望对大家有所启发。   我是学机械专业的,对于机械专业我还是很感兴趣,而且当年这个专业也是我自己选择的。本科时成绩没排第一,但也排专业前列。硕士时成绩一直是专业第一,还拿过国家奖学金。由此可见,我还是挺热爱机...

码到成功 7万+

嵌入式Linux应用开发完全手册(一)嵌入式Linux基础知识

嵌入式Linux开发完全手册读书笔记 第3章

guanchunsheng的博客 1179

linux 基础知识学习笔记

浅浅记录一下自己系统的从linux基础知识开始的嵌入式学习之旅,整理了一下相关笔记,为了防止丢失,在 csdn 上存储一下。

xiaopen_0529的博客 1107

linux C应用开发

linux应用开发

嵌入式分享 7266

Linux超详细笔记

Linux超详细笔记,个人学习时很认真的记录的,觉得好的麻烦点个赞。

m0_63837020的博客 1万+
上一篇: C语言本质笔记
下一篇: 数据结构与算法笔记(java)
彦祖学嵌入
博客等级 码龄4年 91粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值