- 博客(29)
- 资源 (19)
- 收藏
- 关注
原创 制作文件系统之一:安装交叉编译工具链
开发平台:Ubuntu11.04 目 标板:ARM体系结构 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) 1、把arm-gcc-4.1.1.tar.bz2下载到Ubuntu的$HOME目录下,然后解压。 $ tar jvxf arm-gcc-4
2011-11-28 23:33:45 1921
原创 Linux内核中的常用宏container_of其实很简单
开发平台:Ubuntu11.04 编 译器:gcc version 4.5.2 (Ubuntu/Linaro4.5.2-8ubuntu4) Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。 Container_of的定义如下:
2011-11-27 19:50:47 37827 11
原创 例解GNU C之表达式中的复合语句
前言:计算机语言是编译器和程序员交流的依据和规范,GNU C是GCC特有的功能,在Linux内核中被广泛应用。 帮助文档:http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/C-Extensions.html#C-Extensions 在讲解新概念之前,先回顾一下在标准C中表达式和复合语句的概念,表达式指的是运算符和操作数的组合,而复合
2011-11-27 14:52:51 3777 1
原创 例解GNU C之零长数组与变长数组
前言:计算机语言是编译器和程序员交流的依据和规范,GNU C是GCC特有的功能,在Linux内核中被广泛应用。 帮助文档:http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/C-Extensions.html#C-Extensions 1、零长数组 GNU C允许声明长度为零的数组,但它只能被用于结构体的最后一个成员。
2011-11-25 17:31:00 8691
原创 例解GNU C之指定初始化项目
前言:计算机语言是编译器和程序员交流的依据和规范,GNU C是GCC特有的功能,在Linux内核中被广泛应用。 帮助文档:http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/C-Extensions.html#C-Extensions 指定初始化项目(Designated Initializers):指的是可以对数组中的某些元素或结构体
2011-11-25 14:44:25 4342 1
原创 例解GNU C之typeof
前言:计算机语言是编译器和程序员交流的依据和规范,GNU C是GCC特有的功能,在Linux内核中被广泛应用。 帮助文档:http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/C-Extensions.html#C-Extensions 关键字typeof用于获取表达式的数据类型。 简单例子,如清单1: char *chpt
2011-11-24 15:01:15 7715 7
原创 对比理解指针函数和函数指针
1、函数指针,可以这样理解,它首先是一个指针变量(一般占4个字节),只是它将要指向的数据类型为某种形式的函数。 举例如清单1: #include int int_func(int a, int b){ return a + b;}char char_func(char a, char b){ return a + b;}int main(void)
2011-11-24 12:49:44 1378
原创 另类解读C语言数组的特性
数组的本质其实就是把多个相同数据类型的变量捆绑在一起使用而已。例如int a[10],其实质就是把10个整型变量按照地址从低到高的顺序依次分配在一段连续的40个字节的内存空间上。 1、一维数组 一维数组举例,如清单1: #include int main(void){ int a[5] = {1, 2, 3, 4, 5}; int *p = a; /
2011-11-24 00:12:48 2971
原创 常用库之六:ibfontconfig以及libexpat的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) 源码包:fontconfig.tar.bz2(可从http://download.csdn.net/detail/npy_lp/3831341上下载) Fontconf
2011-11-23 13:27:41 6705 9
原创 常用库之九:libncurses的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) ncurses源码包:ncurses-5.9.tar.gz (可从官网http://ftp.gnu.org/pub/gnu/ncurses/上下载) Ncurses提供
2011-11-23 12:13:25 17456
原创 常用库之八:libpopt的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) Popt源码包:popt-1.7.tar.gz (可从http://download.csdn.net/detail/npy_lp/3830473上下载) 此库被一些程
2011-11-23 10:52:17 7504 1
原创 常用库之七:libusb和usbutils的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) 源码包:libusb.tar.bz2(可从http://download.csdn.net/detail/npy_lp/3829455上下载) libusb 是一个用C
2011-11-22 23:56:02 10191 3
原创 常用库之五:libtiff的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) TIFF源码包:tiff.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3827430上下载,tiff-3.8.2.tar.gz中
2011-11-22 16:50:46 6685 8
原创 常用库之二:libfreetype的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) FreeType源码包:freetype.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3826870上下载) F
2011-11-22 15:24:55 13486 3
原创 常用库之三:libpng的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) PNG源码包:libpng-1.2.16.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3826560上下载) l
2011-11-22 14:28:59 8771 2
原创 常用库之一:libjpeg的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) Jpeg源码包:libjpeg.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3825813上下载) libjpe
2011-11-22 12:04:16 10157 1
原创 常用库之四:zlib的交叉编译
开发平台:Ubuntu11.04 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载) Zlib源码包:zlib.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3825370上下载) 用来支持数据压缩或
2011-11-22 10:56:28 30203 18
原创 在Linux-2.6.38.8上移植yaffs2文件系统
开发平台:Ubuntu 11.04 Yaffs2源码包:yaffs2.tar.bz2 (可从http://download.csdn.net/download/npy_lp/3810132 上下载) 通过以下命令即可在Linux-2.6.38.8上成功移植yaffs2文件系统(以下命令都是基于内核源码目录linux-2.6.38.8和yaffs2源码包yaffs2.tar
2011-11-21 14:45:27 2318
原创 内核移植之编译初体验
开发平台:Ubuntu11.04 目 标板:优龙FS2410 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111 上下载) 内核源码:linux-2.6.38.8.tar.bz2 交叉编译Linux内核大概会经历如下几步: 第一步,解
2011-11-20 00:48:04 1857
原创 简要说明S3C2410X的Nandflash启动模式
由于Norflash相对较高的价格,一般MCU厂商都会通过其他方法在硬件上实现支持Nandflash启动模式。 S3C2410X就是在MCU内部集成4KB被叫作Steppingstone的SRAM,当系统启动时Nandflash前4KB数据就被自动地拷贝到Steppingstone中,然后从Steppingstone开始执行,所以必须要在这4KB代码中实现内存控制器和Nandflash控
2011-11-19 23:01:47 2741
原创 关于编译Linux-2.6.38.8内核时s3c_device_ohci未定义问题的分析
开发平台:Ubuntu11.04 目 标板:优龙FS2410 编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111 上下载) 在编译Linux-2.6.38.8内核的最后阶段出现s3c_device_ohci未定义的错误: arch/arm/mach-s3
2011-11-19 19:38:16 1915
原创 使用CodeViz生成C/C++函数调用关系图
运行环境:虚拟机下的Ubuntu 11.04 结合Graphviz工具,使用CodeViz可以生成直观和漂亮的C/C++程序函数之间的调用关系图。 1、安装graphviz 在安装CodeViz之前,必须先安装它所依赖的工具dot,否则将无法完成./configure操作并提示以下错误信息:checking for dot...not foundFATA
2011-11-18 13:15:58 17941 4
原创 *p++和*++p的区别
接下来,通过示例彻底理解自增运算符的两种用法(自减的用法与之类似,只不过是加1变成了减1)。 1、++i和i++的区别 如清单1(注意代码中的注释): #include int main(void){ int a, b, i = 7; i++; //等价于i = i + 1; ++i; //等价于i = i + 1;
2011-11-07 13:47:15 163341 12
原创 指针的运算
其实,在C语言中,指针功能的强大,主要体现在指针变量的间接运算上,指针涉及的运算并不多。 1、基本运算 指针变量的基本运算包括赋值、取地址以及取值(间接运算)等运算。 举例,如清单1: #include int main(void){ int a = 5; int *p = &a; int b = *p; *
2011-11-06 19:35:09 18958 2
原创 作用域与函数传值调用
在C语言中,所有变量、宏、函数(函数的声明形式即为函数原型)、自定义数据类型以及别名等数据必须先声明后使用。通常在头文件中包含这些声明,如extern int global_data,这个声明只是告诉编译器全局变量的类型和名字,至于对它的定义(分配内存的声明即为定义)则在别处进行。 1、作用域 在C语言中,常见的有代码块(一对花括号之间的代码)作用域和文件作用域。 所
2011-11-06 16:19:28 1576
原创 char *p = "123"和char a[] = "123"根本就不同
示例代码如下: #include int main(void){ char *p = "123"; //等价于char *p; p = "123"; char a[] = "123"; //等价于char a[] = {'1', '2', '3', '\0' }; printf("address a = %p, p = %p, &p = %p\n"
2011-11-03 23:26:08 8966
原创 准确理解typedef的用法
在C语言中,关键字typedef用来为现有数据类型创建一个别名,而不是用来创建一个新的数据类型。 1、typedef的用法 简单的例子,如清单1: #include typedef int type_int;int main(void){ type_int a = 0x10203040; short b = a;
2011-11-02 14:36:56 3010
原创 二级指针与取地址运算符
接下来,我们结合下面的例子来理解二级指针的概念。#include int main(void){ int a = 3; int *one_ptr = &a; //相当于int *one_ptr;one_ptr = &a; int **two_ptr = &one_ptr; //相当于int **two_ptr; two_ptr = &one_p
2011-11-01 22:48:38 7572
原创 简单而透彻地理解C语言指针
不少C语言初学者都感觉指针很难理解,其实造成这样的困扰,仅仅是因为指针变量的声明和使用方式与普通的变量(如整型变量)不同而已。 要透彻理解C语言指针,只要能看懂下面三点即可(结合下面的代码):#include int main(void){ int *int_ptr; short *short_ptr; char *char_ptr;
2011-11-01 17:49:50 2081
qBittorrent.zip
2020-09-10
TR2011-688.pdf
2019-11-26
vlc-2.2.8-win32.zip
2018-04-18
iputils-s20121221.tar.bz2
2013-03-08
u-boot和Linux内核镜像以及制作好的文件系统
2011-12-07
tiff源码包
2011-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人