- 博客(10)
- 资源 (53)
- 收藏
- 关注
原创 elf转化成bin后,bin文件变大的问题
在上一篇文章《位置无关代码(PIC)的思考》中提到,在elf文件转化成bin文件的过程中,输出段与段之间如果有空隙的话,objcopy会用0来填充段与段之间的空隙,也可以通过objcopy的选项--gap-fill= val来制定填充值的内容为val,这将会导致bin文件比elf文件大很多的问题,在很多嵌入式设备上将是无法接受的,因为嵌入式设备通常会将程序转化成bin烧写到FLASH中,这样做的目
2011-11-13 16:22:00 10348 4
原创 位置无关代码(PIC)的思考
应用程序必须经过编译、汇编和链接后才变成可执行文件,在链接时,要对所有目标文件进行重定位(relocation),建立符号引用规则,同时为变量、函数等分配运行地址。当程序执行时,系统必须把代码加载到链接时所指定的地址空间,以保证程序在执行过程中对变量、函数等符号的正确引用,使程序正常运行。在具有操作系统的系统中,重定位过程由操作系统自动完成。 在设计Bootloader程序时,必须在裸机环境中进
2011-11-13 11:49:46 15066 1
原创 qemu源码分析之Makefile
通过分析qemu的Makefile可以了解qemu代码的组织方式以及qemu功能模块的划分,一方面,有助于理解qemu源代码设计思路,另一方面,有助于根据需求裁剪qemu代码,生成精简的符合制定要求的qemu。 为了更好的理解qemu的Makefile的设计,对于不熟悉makefile语法规则的同学建议阅读下面两篇文章: 1. 《Makefile常用函数分析》 2.
2011-11-12 18:06:57 6810
原创 Makefile常用函数总结
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具 有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函 数的返回值可以当做变量来使用。 一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:$( ) 或是${ } 这里,就是函数名,make支持的函数不多。是函数的参数,参
2011-11-12 18:00:35 54142 4
原创 linux编程之mprotect
mprotect: 设置内存访问权限mmap 的第三个参数指定对内存区域的保护,由标记读、写、执行权限的 PROT_READ、PROT_WRITE 和 PROT_EXEC 按位与操作获得,或者是限制没有访问权限的 PROT_NONE。如果程序尝试在不允许这些权限的本地内存上操作,它将被 SIGSEGV 信号(Segmentation fault,段错误)终止。在内存映射完成后,这些权限仍可
2011-11-06 22:46:12 22090 1
原创 linux编程之定时器
创建一个定时器:int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid) 进程可以通过调用timer_create()创建特定的定时器,定时器是每个进程自己的,不是在fork时继承的。clock_id说明定时器是基于哪个时钟的,*timerid装载的是被创建的定时器的ID。该函数创
2011-11-06 21:29:00 2245
原创 系统调用和c库之间的关系
Tips: 用man查询函数时候有些并不能直接man + 函数名查到,例如:man fopen man 2 open所以可以用man+数字+函数名来试试,具体的内容可以查看 /usr/local/share/man/下面对应的目录___________________________________________________________________________
2011-11-03 22:27:29 9484 1
原创 Linux 新api eventfd
eventfd 在内核版本,2.6.22以后有效。查看内核版本可以用命令 uname -r 。1 #include int eventfd(unsigned int initval, int flags);这个函数会创建一个 事件对象 (eventfd object), 用来实现,进程(线程)间 的 等待/通知(wait/notify) 机制. 内核会为这个对象维护一个
2011-11-02 22:26:19 1563
转载 Linux 新增系统调用的启示
最近在研究 Linux 内核的时间子系统,为下一篇长文《服务器程序中的日期与时间》做准备,无意中注意到了 Linux 新增的几个系统调用的对编写服务器代码的影响,先大致记录在这里。这篇博客也可算作前一篇《多线程服务器的常用编程模型》的一个注脚。1. 服务器程序的风格可能在变新的创建文件描述符的 syscall 一般都支持额外的 flags 参数,可以直接指定 O_NONBLOCK 和 FD
2011-11-02 22:11:43 1473
原创 fcntl设置FD_CLOEXEC标志作用
通过fcntl设置FD_CLOEXEC标志有什么用?close on exec, not on-fork, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不能再使用它,但是在使用fork调用的子进程中,此描述符并不关闭,仍可使用。eg:jamie@jamie-laptop:~$ cat test.c#include #include
2011-11-02 22:11:05 40304 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人