Linux内核编程知识集锦
1 |
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git |
根据需要,切换分支。
1 |
apt install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison |
你也可以手工直接编辑.config文件。每个选项都可以设置以下值之一:
取值 | 说明 |
y | 将相应特性构建到内核中 |
n | 不包含此特性 |
m |
构建为模块,这样可以按需加载 注意:
|
AutoTools学习笔记
开发一个C程序时,为了在不同环境下运行,可能需要考虑这些问题:
- 某些函数在某些环境下不存在,例如strtod()
- 同样功能的函数,名字不同,例如strchr() 与 index()
- 函数名称冲突,例如int setpgrp(voi…
Native编程知识集锦
不同编译器(甚至同一款编译器的不同版本)创建的目标文件(.o/.obj)、静态库常常不能相互链接,因此常常需要获得源码,从头编译。
动态链接库(DLL)的互操作性则较好,如果DLL是基于C编写的,那么互操作性通常不是问…
阅读全文Windows下基于Eclipse CDT的C/C++开发
- 到Eclipse CDT官网下载:http://www.eclipse.org/cdt/并安装
- Eclipse的相关配置可以参考:Eclipse 4.3.2开发环境搭建
下面的工具链可以根据工作环境进行选择性的安装。
- 安装MinGW,下载地址:http://sourceforge.net/projects/mingw/files/
- 安装MSYS,到http://sourceforge.net/projects/mingw/files/MSYS/下载 mingw-get-setup.…
使用C语言进行文本处理
字符集(Charset)、代码页(Code page)、编码方式(Encoding)这三个术语常常描述一件事情——如何把字符存储为二进制形式(字节)。
严格的讲,字符集是字符的集合,编码方式则用于确定某个字符集中的字符如何编码(为字节),但是对于A…
阅读全文GNU Make学习笔记
对于任何编译器可以通过Shell调用的编程语言,均可以通过GNU Make(以下称make)构建。make可以用于任何这样的任务:如果某些文件所依赖的文件发生了变化,则自动更新这些文件。
需要编写makefile文件来使用make,该文件中包含了文件之间的依赖关系、提供更新每个文件的命令,在makefile所在目录中运行make命令,即可完成文件更新,make会根据文件名GNUmakefile、makefile、Makefile依次寻找,可…
阅读全文Linux内核学习笔记(五)
内核的调试比用户级程序困难的多,并且风险高——内核中的一个错误可能导致系统立即崩溃。驾驭内核调试的能力很大程度上取决于经验和对内核的深刻理解。
内核提供的打印函数 printk() 与对应的C库函数功能几乎相同,但是它有一些特殊的特性:
printk()函数是个弹性极佳的函数,可以在中断上下文、进程上下文、持有任何锁时、…
阅读全文Linux内核学习笔记(四)
当Linux内核组件要读写一些数据时,并不是请求一发出,内核便立即执行该请求,而是将其推迟执行。当传输一个新数据块时,内核需要检查它能否通过。Linux IO调度程序是介于通用块层和块设备驱动程序之间,所…
阅读全文Linux内核学习笔记(三)
Linux使用虚拟内存技术。它是一种位于应用程序内存请求与内存管理单元(MMU,一般是集成于CPU的硬件)硬件之间的抽象层。虚拟内存计数有以下优势:
- 多个进程可以同时并发的运行,使用重复的虚拟内存地址
- 应用程序所需内存大于物理内存时也可以运行
- 程序代码中,只有部…