摘要: 1. make distclean2. 配置内核 ----> 生成 .config文件make menuconfig ARCH=armMakefile文件分析:3. 编译内核make uImage ARCH=arm CROSS_COMPLIE=arm-linux-编译完成后位于 ARCH/arm/boot/zImage4. 内核启动流程 (终极目标:挂在根文件系统,运行应用程序)4. 文件系统5. 如何制作linux嵌入式所需的文件系统?a. 创建目录和文件b. 为创建的目录和文件建立管理数据。6. 如何创建根文件系统etc 包含 fstab init.d inittab profile 阅读全文
posted @ 2013-08-05 20:40 今晚打酱油_ 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 1. 非阻塞并发模型直接将socket设置为非阻塞, 轮询处理连接和接收。缺点: 极大消耗CPU资源,不适合实际应用。2. 信号驱动模型当Socket文件描述符准备就绪后 内核会给进程发送一个 SIGIO 或 SIGPOLL信号,signal(SIGIO, fun);实际中 并不只有套接字有输入时才会发出这些信号, 实际情况中并不能用。3. 超时并发模型A: 通过套接字选项设置超时 通过套接字选项SO_SNDTIMEO 和 SO_RCVTIMEO设置读写超时,但是只能设置读写超时,不能设置connect 和 accept 等连接超时,并且有的系统不支持。B: 通过信号SIGALRM 设置超时# 阅读全文
posted @ 2013-08-05 14:36 今晚打酱油_ 阅读(263) 评论(0) 推荐(0) 编辑
摘要: makefile下$(wildcard $^),$^,$@,$?,$ $@当执行此规则的命令时,自动环变量“$*”被展开为“茎” 在这里就是。“big” “little”和。静态模式规则对一个较大工程的管理非常有用。它可以对整个工程的同一类文件的重建规则进行一次定义,而实现对整个工程中此类文件指定相同的重建规则。比如,可以用来描述整个工程中所有的.o 文件的依赖规则和编译命令。通常的做法是将生成同一类目标的模式定义在一个 make.rules 的文件中。在工程各个模块的 Makefile 中包含此文件。静态模式makefile中$(cobjs): $(obj)/%.o: $(src)/%.ch 阅读全文
posted @ 2013-08-05 13:10 今晚打酱油_ 阅读(839) 评论(0) 推荐(1) 编辑
摘要: gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。cc是Unix系统的C Compiler,而gcc则是GNU Compiler Collection,GNU编译器套装。gcc原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C、C++、Objective-C、Ada、Fortran、Java)。因此,它们是不一样的,一个是古老的C编译器,一个是GNU编译 阅读全文
posted @ 2013-08-05 08:57 今晚打酱油_ 阅读(10619) 评论(1) 推荐(1) 编辑
摘要: 1. 目标 依赖 命令make会比较targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的话,那么,make就会执行后续定义的命令。2. 示例一在Makefile中的命令,必须要以[Tab]键开始。#include#include"add.h"int main(){ int result=0; result = add(2, 3); printf("2+3=%d\n", result);}main: main.o add.ogcc -o main m 阅读全文
posted @ 2013-08-05 08:31 今晚打酱油_ 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 1. Bootloader作用PC机中的引导加载程序由BIOS(其本质是一段固件程序)和GRUB或LILO一起组成。BIOS在完成硬件检测和资源分配后,将硬盘中的引导程序读到系统内存中然后将控制权交给引导程序。引导程序的主要任务是将内核从硬盘上读到内存中,然后跳转到内核的入口点去运行,即启动操作系统。简单地说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。系统加电或复位后,所有的CPU通常都从CPU制造商预先安排地址开始执行。比如,S3C2410在复位后从地址0x0000 阅读全文
posted @ 2013-08-04 21:24 今晚打酱油_ 阅读(4501) 评论(0) 推荐(1) 编辑
摘要: 今天用ubuntu来调试信息,printk死活打印不出信息,即使把级别跳到,即KERN_ALERT也不行,后再搜了好长时间网络,这个地址:http://bbs.chinaunix.net/archiver/tid-2306491.html有关于这个的讨论,咳ubuntu哪里适合开发呀,只是用于娱乐比较好的解决方法:在终端中#dmesg -c 清除一下系统的开机信息然后#insmod helloword.ko#dmesg就可以出现信息了。。。信息多了就用dmesg -c来清除一下就好了。。 阅读全文
posted @ 2013-08-04 14:18 今晚打酱油_ 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 1. 先apt-get install 先装cramfsprogs2.http://archive.debian.net/zh-cn/sarge/initrd-tools下载initrd-tools 安装包,手动安装。。。在进行内核编译时,需要进行制作initrd.img.在Fedora下面一般是用mkinitrd,而在Ubuntu/Debian下是用mkintramfs.它们的用法稍微有些不一样,如下所示:mkinitrd /boot/initrd.img 2.6.26mkintramfs 2.6.26 -o /boot/initrd.img 阅读全文
posted @ 2013-08-04 02:17 今晚打酱油_ 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 内核编译错误解答(elf_i386错误)在编译内核过程中遇到的问题及解决方法:1.root@org:/usr/src/linux# make menuconfig*** Unable to find the ncurses librariesor the*** required header files.*** 'make menuconfig' requires thencurses libraries.****** Install ncurses (ncurses-devel) andtry again.***make[1]: *** [scripts/kconfig/do 阅读全文
posted @ 2013-08-04 01:30 今晚打酱油_ 阅读(481) 评论(0) 推荐(0) 编辑
摘要: arch/x86/kernel/ptrace.c:1472:17: error: conflicting types for ‘syscall_trace_enter’In file included from /home/rex/Downloads/linux-2.6.32.60/arch/x86/include/asm/vm86.h:130:0,from /home/rex/Downloads/linux-2.6.32.60/arch/x86/include/asm/processor.h:10,from /home/rex/Downloads/linux-2.6.32.60/arch/x 阅读全文
posted @ 2013-08-04 01:15 今晚打酱油_ 阅读(905) 评论(0) 推荐(0) 编辑