![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Makefile & shell编程
文章平均质量分 60
本专栏是源码编译相关的知识总结
正在起飞的蜗牛
这个作者很懒,什么都没留下…
展开
-
编译和安装gdb源码详细步骤介绍
(2)本文下面的编译是按照8.2版本的源码进行的,其余版本的源码可能会报错,需要自行解决;原创 2022-10-13 22:24:28 · 2843 阅读 · 0 评论 -
Makefile中同名目标的处理
(1)Makefile中存在同名目标是我在一个项目中遇到的,当时Makefile的执行流程不符合预期,害我花了一些时间来排查,最后才知道是被靠后的同名目标给覆盖了;(2)在实际项目中,整个编译的代码是比较复杂的,分成多个文件并且分散在不同的目录下,在执行过程中存在跳转执行和include的包含关系,如果存在同名目标的覆盖问题,会给后面维护的程序员带来麻烦;(3)建议不要使用同名覆盖的机制。本身就不常用也不是必须用,还要程序员去推理到底覆盖后的目标是怎样的,第一次遇到的程序员可能花不少时间来排查问题。原创 2022-10-13 22:10:07 · 1169 阅读 · 0 评论 -
项目通用Makefile的编写(包含Makefile.build文件分析)
下面分析的工程和Makefile是图片解码播放器项目的,具体可参考博客:;原创 2022-08-27 21:51:42 · 2096 阅读 · 0 评论 -
编译可执行程序的Makefile模板
Makefile原创 2022-08-05 23:10:24 · 375 阅读 · 0 评论 -
Makefile的函数调用详解
1、Makefile的函数调用语法# Makefile的函数调用格式$(<function> <arguments>) 或是 ${<function> <arguments>}示例:其中subst是Makefile默认支持的函数 $(subst a,b,${x})(1)函数调用以“$”开头,以圆括号或花括号把函数名和参数括起;(2)就是函数名;(3)是函数的参数,参数间以逗号“,”分隔,而函数名和参数之间以“空格”分隔;重点:我们需要关注原创 2022-05-07 23:16:53 · 1799 阅读 · 0 评论 -
shell脚本里用stat命令获取文件大小、所有者、修改时间
1、stat命令介绍获取文件的状态信息,比如:大小、修改时间、所有者······dai@ubuntu:~$ stat ./test.sh File: ‘./test.sh’ Size: 745 Blocks: 8 IO Block: 4096 regular fileDevice: 801h/2049d Inode: 2367314 Links: 1Access: (0775/-rwxrwxr-x) Uid: ( 1000/ dai原创 2022-03-13 15:03:45 · 8621 阅读 · 0 评论 -
shell脚本里的数组和“=~”
1、数组变量定义A=(1 2 3 4 5):一对括号表示是数组,数组元素用"空格"符号分割开。即数组的定义要使用()2、获取数组全部成员“${A[@]}” 或" ${A[*]}" : 表示获得全部组数。3、获取数组指定成员${A[0]}:表示获得数组中的第1个成员,和C语言的数组一致4、获取数组成员个数。“${#A[@]}” 或" ${#A[*]}"5、表示获得第一个数组成员的长度${#A[0]}6、修改数组成员的值A[1]=haha :将数组的第2个成员赋值为h原创 2022-03-13 00:08:57 · 3767 阅读 · 3 评论 -
用shell脚本批量删除文件名后缀
前言脚本find $PATH -name "*-rsa2048" | awk -F "-rsa" '{print $1}' | xargs -i -t mv ./{}-rsa2048 ./{}解析:原创 2021-12-19 22:05:03 · 5183 阅读 · 0 评论 -
嵌入式开发(S5PV210)——u-boot的顶层Makefile分析
前言uboot的版本主机的CPU架构和操作系统原创 2021-10-24 21:04:07 · 265 阅读 · 0 评论 -
嵌入式开发(S5PV210)——u-boot的顶层config.mk分析
config.mk的作用config.mk的作用是配置uboot编译的,比如配置交叉编译工具链,链接地址,编译选项,指定头文件路径等,但是config.mk的配置是建立在顶层mkconfig、主Makefile等配置之上的。config.mk的调用# load other configurationinclude $(TOPDIR)/config.mkconfig.mk是被主Makefile调用.congfig.mk的分析:autoconf.mk文件#在 主Makefile 中生成原创 2021-10-24 19:23:01 · 1934 阅读 · 0 评论 -
Makefile的两种编译方法——原地编译和单独输出文件夹编译
原地编译编译代码时默认是原地编译,原地编译就是编译生成的.o文件和相应的.c文件是在同一目录的。原地编译比较简单,但是会污染源码,目录里会多出生成的.o文件,并且编译不同配置的目标文件,都要先清除之前的.o文件。单独输出文件夹编译在编译时指定输出目录,在编译的时候所有生成的.o文件或生成的其他文件全部丢到那个输出目录下去。同一份代码在编译不同配置的目标文件时,可以指定不同的输出目录,这样就可以同时有两份不同配置的目标文件,并且不会污染源代码。两种编译方法的应用在uboot和kernel都原创 2021-10-10 23:11:54 · 5201 阅读 · 0 评论 -
Linux中的&、&&、|、||、$?、$#
1.命令:|表示管道,上一条命令的输出,作为下一条命令参数,如:ls | grep “aa”,在ls的输出中查找aa字符串。2.命令:||表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”3.命令:&表示任务在后台执行,执行程序的后面添加&,这样在程序执行时我们仍然可以操作控制台。如要在后台运行redis-server,则有 redis-server &4.命令:&&表示前一条命令执行成功时原创 2021-09-04 23:07:33 · 8801 阅读 · 0 评论 -
嵌入式开发中grep、sed、awk、dd命令的常见用法
1.grep命令:1.统计指定字符的个数,返回aa字符出现的次数: ls | grep -c "aa" 2.查找是否有aa,如果查找到aa则$?为0,条件成立执行if里的语句。 ls | grep -q "aa" if[ "$?" == "0" ];then xxxxxx fi 3.-E:可以指定多个查找条件,中间用|隔开;上一句的作用就是查找含有aaa或者bbb的行。 ls | grep -E "aaa|bbb*" 2.sed命令:1.将行首的data_end替换成cdat原创 2021-09-04 22:47:29 · 339 阅读 · 0 评论 -
详解shell输出重定向:>/dev/null 2>&1
1.输入输出重定向介绍重定向简单来说就是把本来已经默认的、确定的输入输出给重新定位到你想要的地方。 重定向这个概念在C语言中就有,在C语言编程中,标准输出是屏幕,使用printf()函数默认是输出到屏幕显示。但是有时候我们需要将信息输出到文件或者申请的内存中,这时候就可以用sprintf()和fprintf()函数;也可以将标准输出的文件描述符给强行占用,使标准输出的文件描述符指向自己想要的文件。在shell中默认打开了三个文件,分别是标准输出(文件描述符0)、标准输出(文件描述符1)、错误输出(文件原创 2021-09-04 16:56:58 · 3248 阅读 · 0 评论 -
嵌入式开发——常用shell编程知识点
shell介绍1.shell是操作系统的终端命令行,可以理解为人机交互的一种方式,软件系统提供给用户操作的命令行界面。2.编写shell的语言叫shell语言,也叫脚本语言,shell语言是一类语言而不是某一种特定的语言,常用的shell语言:sh、bash、csh、ksh、perl、python等。在Linux下常用的脚本语言有sh、bash。3.shell脚本的运行机制:解释运行。解释运行和编译运行时两个相对的概念,解释运行就是解释一句运行一句;编译运行是要把代码全部编译成可执行程序才能运行。所原创 2021-09-04 16:16:34 · 621 阅读 · 0 评论 -
shell程序传参和main函数传参的区别
算法原创 2021-08-27 23:28:31 · 846 阅读 · 0 评论 -
Makefile中4种赋值运算符(=、:=、?=、+=)
这四种赋值运算符在Makefile中的作用都是赋值,但是有一些细节上的差异,如果不是经常解决Makefile的编写,很容易混淆,特在此总结以便以后查阅。原创 2021-08-15 21:32:51 · 4561 阅读 · 2 评论 -
makefile中的patsubst、notdir、wildcard介绍以及用法
从V型才原创 2021-06-08 19:51:47 · 2960 阅读 · 0 评论 -
Makefile的基本用法
发原创 2020-01-25 21:01:25 · 335 阅读 · 0 评论 -
Makefile中的条件编译:ifeq、ifneq、ifdef和ifndef
ifneq ((findstring84212−MAJRS,(findstring 84212-MAJRS,(findstring84212−MAJRS,(SupportDevices))(findstringYUETIAN,(findstring YUETIAN,(findstringYUETIAN,(Specialities)), 84212-MAJRSYUETIAN)CFLAGS += -DUNIVERSAL_BUSSINESSendififeq ($(findstring HSYKT, $(S原创 2021-06-02 19:55:07 · 10534 阅读 · 0 评论