- 博客(12)
- 资源 (6)
- 收藏
- 关注
转载 GNU C中的零长度数组
在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,如果你致力于编写可移植,或者是稍稍需要跨平台的代码,这些Trick最好还是收起来的好。 在GNU的指南中,它是如此写道:
2014-12-25 11:25:12 638
转载 图解U-Boot:第一阶段源码分析
U-Boot第一阶段的启动流程。这个阶段主要是初始化硬件设备,为加载U-Boot的第二阶段代码准备RAM空间最后跳转到lib_arm/board.c中start_armboot函数,这是第二阶段的入口点。 U-Boot第一阶段的存储器布局。上图中U-Boot安装在Nand Flash,启动时Nand Flash控制器前4KB的代码复制到SRAM中,这4KB的代码再将整个U-Bo
2014-12-23 17:53:51 652
转载 GNU GCC 实用工具 ar 的参数的意义
http://blog.itpub.net/640706/viewspace-1059269/GNU GCC 实用工具 ar 的参数的意义[@more@]GNU GCC 实用工具 ar 的参数的意义:ar key [args] [posname] archive [files]将一组编译过的文件合并为一个文件.最常见的用法就是建立并更新由装载器(loader--ld)使用的
2014-12-22 17:08:05 3840
原创 基于Linux内核的应用程序构造(三)——内核安装
if make f23pv1ethen if make then if make install
2014-12-22 17:01:18 742
原创 基于Linux内核的应用程序构造(二)——应用程序编译
依据oplonu产品为例,着重解析编译过程Kernel Version:linux2.6.21.5SDK:https://github.com/DavionKnight/oplonu执行编译脚本$ ./f23p-v1e-build执行完make f23pv1e,执行makeoplonu/Makefile.conf:COMPONENTS = \
2014-12-22 10:47:15 758
转载 dup dup2剖析
http://www.cnblogs.com/sdphome/archive/2011/04/30/2033381.htmldup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文
2014-12-16 17:12:32 756
原创 基于Linux内核的应用程序构造(一)——内核配置
依据oplonu产品为例,着重解析编译过程。1.执行编译脚本$ ./f23p-v1e-build执行make f23pv1eoplonu/make.rules:进入$(KERNEL_DIR)/linux-2.6.21.5并执行make onu_respin_f23p_defconfig;$(KERNEL_DIR)/linux-2.6.21.5/Makefile:
2014-12-09 14:40:05 693
原创 Makefile中 -I -L -l区别
我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld上面这句表示在编译hello.c时:-I /home/hello/include表示将/home/hello/
2014-12-08 16:58:58 34954
原创 makefile里PHONY总结
作用:1.防止命令跟文件夹下的文件重名,造成不执行2.不管是否最新,都会执行,不会提示"make: `prog2' is up to date."3.一般情况下,伪目标不作为另一个目标的依赖, 原因:1.伪目标一般只执行一些小命令,通过命令行单独执行,如"make clean" 2.当每次执行这个目标时,伪目标作为依赖,每次都要执行
2014-12-08 16:55:55 1741
转载 Makefile 中:= ?= += =的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endif
2014-12-08 16:52:40 798
转载 c/c++ linux调试工具
原文地址:http://blog.csdn.net/bugouyonggan/article/details/194839991. 使用printf调试#ifdef DEBUGPrintf(“valriable x has value = %d\n”, x)#endif然后在编译选项中加入-DDEBUG更复杂的调试应用如:
2014-12-05 16:58:15 3082
vim taglist文件
2016-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人