木有寸557

 

2014年3月31日

static 变量

摘要: 被static 修饰的变量全部称为静态变量。所有的静态变量全部存储在静态存储区。按静态变量定义的位置不同,又分为全局静态变量和局部静态变量。 1)全局静态变量 在全局变量的说明前加上static,就是全局静态变量。实际上全局变量全部存储在静态存储区(不管有木有加上static,全局变量都是存储在静态存储区)。 但二者还是有区别的,区别在于作用域的扩展上。非静态的全局变量作用域可用extern扩展到组成源程序的多个文件,而静态全局变量的作用域只限于本文件。 对于static修饰的函数也是。 2)局部静态变量 指的是在某个函数中用关键字static定义的变量,这种... 阅读全文

posted @ 2014-03-31 20:39 小猪_你快跑 阅读(190) 评论(0) 推荐(0) 编辑

2014年3月12日

Unix网络编程 -- ubuntu下搭建编译环境( 解决unp.h 编译等问题)

摘要: 1.安装编译器,安装build-essential sudo apt-get install build-essential 2.下载本书的头文件 下载unpv13ehttp://ishare.iask.sina.com.cn/f/13238521.html 3.进入unpv13e 查看readme.照下列提示操作 1) chmod u+x configure ./configure 2) cd lib make 3) cd ../libfree make 4)cd ../libgai make ... 阅读全文

posted @ 2014-03-12 15:26 小猪_你快跑 阅读(544) 评论(0) 推荐(0) 编辑

2014年3月2日

linux 错误处理

摘要: linux程序设计中,有许多系统调用和函数会因为各种原因而失败.在失败时设置外部变量errno的值来指明失败原因.程序必须在函数报告出错之后立即检查errno变量,因为它可能被下一个函数调用所覆盖(外部变量errno只有一个,所有的失败调用(这些调用指的是失败会设置errno的调用)都会设置errno). 错误代码的取值和含义都列在errno.h里 EPERM: 操作不允许 ENOENT:文件或目录不存在 EINTR:系统调用被中断 EIO: I/O错误 EBUSY:设备或资源忙 EEXIST:文件存在 EINVAL:无效参数 EMFILE:打开的文件过多 ENODEV... 阅读全文

posted @ 2014-03-02 17:38 小猪_你快跑 阅读(204) 评论(0) 推荐(0) 编辑

2014年2月26日

Ubuntu 安装 fcitx 输入法

摘要: fcitx 和 ibus一样都是输入法框架.下面介绍ubuntu下安装fcitx输入法.1.先卸载系统中的输入法2.安装. 增加ppa源:sudoadd-apt-repositoryppa:fcitx-team/dailybuild-fcitx-master 刷新软件源: sudo apt-get update 依次安装下列依赖包 1.fcitx 2.fcitx-bin 3.fcitx-config-common 4.fcitx-data 5.fcitx-frontend-gtk2 6.fcitx-frontend-gtk3 7.fcitx-fr... 阅读全文

posted @ 2014-02-26 02:30 小猪_你快跑 阅读(712) 评论(0) 推荐(0) 编辑

2013年9月22日

CentOS 安装 chrome 浏览器

摘要: 安装 google-chrome 浏览器,由于众所周知的原因,一直安装不了,下面介绍一种新方法。cd 到 /etc/yum.repos.d创建一个yum新源vi chromium-el6.repo内容如下:[chromium-el6] name=CentOS-$releasever - Chromium EL6 baseurl=http://people.centos.org/hughesjr/chromium/6/$basearch/ gpgcheck=1enabled=1gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-Te 阅读全文

posted @ 2013-09-22 15:45 小猪_你快跑 阅读(528) 评论(0) 推荐(1) 编辑

2013年8月14日

C/C++关键字 extern

摘要: 1.基本解释:extern 可置于变量或函数前面,表示变量或函数的定义在别的文件中,以提示编译器遇到此变量或函数时在其他模块中寻找定义。 extern还有另外2个作用。第一:与“C”连用时,如 extern "C" void fun( int a, int b );表示编译器在编译fun这个函数时,按照C的规则翻译相关的函数名而不是C++。C++会把这个函数名翻译的面目全非,因为C++函数能重载。 第二:extern 不与“C”一起修饰全局变量或函数时,如:extern int g_Int;它的作用就是申明函数或全局变量的作用范围的关键字。其申明的函数或全局变量可在本模块或 阅读全文

posted @ 2013-08-14 22:28 小猪_你快跑 阅读(161) 评论(0) 推荐(0) 编辑

2013年8月8日

BootLoader 详解(3)

摘要: BootLoader的stage2 stage2的代码是C语言来实现的,以便于实现更复杂的功能和取得更好的代码可读性和移植性。它与普通C语言程序不同的是,在编译和链接BootLoader这样的程序时,不能使用glibc库中的任何支持函数。这就带来了一个问题,从哪里跳转到main()函数呢?直接把main()函数的起始地址作为stage2执行映像的入口点。但这样做有2个缺点:1)无法通过main()函数传递函数参数; 2)无法处理main()函数返回的情况。一种更为巧妙的方法是利用trampoline(弹簧床)的概念。用汇编写一段trampoline小程序,并将这段小程序作为stage2可执行映 阅读全文

posted @ 2013-08-08 10:52 小猪_你快跑 阅读(496) 评论(0) 推荐(0) 编辑

2013年8月7日

BootLoader 详解(2)

摘要: BootLoader的stage1 1.基本的硬件初始化 这是BootLoader一开始就执行的操作,其目的是为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境。它通 常包括以下步骤 ①屏蔽所有中断。为中断提供服务通常是OS设备驱动程序的责任,因此在BootLoader的执行全过程中可以不比响应任何中断。中 断屏蔽可以通过写CPU的中断屏蔽寄存器或者状态寄存器(比如ARM的CPSR寄存器)来完成。 ②设置CPU的时钟和频率 ③RAM初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等 ④初始化LED。通过GPIO来驱动LED,其目... 阅读全文

posted @ 2013-08-07 20:57 小猪_你快跑 阅读(753) 评论(0) 推荐(0) 编辑

BootLoader 详解(1)

摘要: 1. Boot Loader的概念 BootLoader就是在操作系统内核运行前之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 1.BootLoader 的安装媒介 系统加电或者复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址取指令。比如,基于ARM7TDMI core 的CPU在复位时通常从地址0x00000000取它的第一条指令。而基于CPU构建的嵌入式系统通常都在某种类型的固态设备(比如ROM、EEPROM、FLASH)被映射到这个预先安排的地址上。... 阅读全文

posted @ 2013-08-07 10:43 小猪_你快跑 阅读(1429) 评论(0) 推荐(0) 编辑

2013年7月31日

预处理器之 条件编译

摘要: 在编译一个程序时,如果我们可以选择某条语句或者某组语句进行翻译或者被忽略,通常显得很方便。只用于调试程序的语句就是很明显的例子。它们不该出现在程序的产品的版本中,但是你可能不想把这些语句从源代码中物理删除,因为如果需要维护性修改时,你可能需要重新调试这个程序,还需要这些语句。 这是就用到条件编译。使用条件编译,你可以选择代码的一部分是被正常编译还是完全忽略。用于支持条件编译的基本结构是#if指令以及与其匹配的#endif指令。 #if constant-expression statements #endif 其中constant-expression(常量表达式)由预处... 阅读全文

posted @ 2013-07-31 16:54 小猪_你快跑 阅读(274) 评论(0) 推荐(0) 编辑

导航