本次blog只讲8个事情,主要包括内核、进程、规范等话题。
1. kernel编译ko
kernel如何去编译一个.ko文件? 请看如下的Makefile
1 2 3 4 5 6 7 | obj-m:=helloworld.o mymodule-objs:=module KDIR?= default : make -C $(KDIR) SUBDIRS=$(PWD) modules clean: make -C $(KDIR) SUBDIRS=$(PWD) clean |
在make时刻只需要增加KDIR的参数传递即可,再补充灵魂-j999
make KDIR=/kernel/ -j999
2. epoll监听文件
可以说epoll大体上作为IO的监听的主体,动不动来一个socket监听,形成一个十万级别的客户端接入,但可以让你头疼在监听一个GPIO,因为
GPIO你只能看电平value高低,看似没用,其实不然,GPIO也有它的特性-中断配置-EDGE,在这个里面存在四个选项:
none,rising,falling,both
通常none,epoll是没有反应的,当作普通文件,说白了epoll是没法监听普通的文件的。
3. shell注释多行
这个shell注释非常简单,#oh my,即可,突然发现/**/更加舒服,但是shell也要多行注释,搜了下发现: ' '
1 2 3 | : ' ’ |
记住,看到的间隙都是空格。
4. 进程间通讯
进程间可以实现多种的通讯方式,如消息队列(非必要不用,会爆仓),管道(很多时候不用),socket(经常用),共享内存(过于高级,不舍得用)等等,其实可以有一些活用,例如消息队列进程间提供线程使用,共享内存也如此。
5. git merge
当你开发master一个而已,不需要merge,当bugfix 需要开很多个branch,那么经常性的merge很必要,merge master或者 merge bugfix 分支,merge更加体现修复问题的清晰,方便团队开发。
6. 制作.so 文件实现
1 2 3 4 5 6 7 8 9 10 | #!/bin/sh #add arm arm-linux-gnueabi-gcc #arm-linux-gnueabi-gcc -fPIC -c socket.c #arm-linux-gnueabi-gcc -fPIC -shared -o libsocket.so socket.o gcc -fPIC -c socket.c gcc -fPIC -shared -o libsocket.so socket.o #cp libsocket.so /lib -fa gcc main.c -o test -lsocket echo "built done" |
-fPIC 作为制作动态库.so的条件。
7. 编程规范守则细聊-杜绝更多if-else 或者 else
当你需要找一个电脑,电脑系统是linux的,运行快的。
此处存在三个条件,通常的情况如下:
1 2 3 4 5 6 7 8 9 | if ( product == computer ) { if ( system == linux ) { if ( speed == fast ) { } } } |
能写两行坚决不写一行,show me the code , dont talk too much.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if ( product != computer ) { return -1; } if ( system != linux ) { return -1; } if (speed != fast ) { return -1; } |
尽可能跳出来,让别人debug更加容易,可读性也强了,else到底去哪里了。
8. 数据结构和接口实现
这样的设计逻辑是在最近的开发应用上不断练就的技能,作为开发设计不应该只coding,而不管设计。
好的code应该从结构一眼看到50%,才到接口实现。
例如存放一个学生的信息:
1. 先定义一个结构体
1 2 3 4 5 6 | struct student { char name[32]; int age; struct student *next; }; |
s1->s2->s3.....
2 定义接口
插入数据和删除数据接口。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了