C/C++
王明威
Java后端开发
展开
-
C语言中const 的常见用法
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable)。我们来分情况看语法上它该如何被使用。1、函数体内修饰局部变量。例:void func(){const int a=0;}首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0。然后再看const.原创 2014-10-19 16:53:15 · 504 阅读 · 1 评论 -
C语言堆栈入门——堆和栈的区别
来看一个网上很流行的经典例子: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456\0在常量区,p3在栈上。 static int c =0; 全局(静态)初原创 2014-10-19 16:53:54 · 487 阅读 · 0 评论 -
静态库和动态库的区别
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺原创 2014-10-19 16:53:43 · 333 阅读 · 0 评论 -
uboot lds文件分析
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")/*指定输出可执行文件是elf格式,32位ARM指令,小端*/OUTPUT_ARCH(arm)/*指定输出可执行文件的平台为ARM*/ENTRY(_start)/*指定输出可执行文件的起始代码段为_start*/原创 2014-10-19 16:54:03 · 425 阅读 · 0 评论 -
uboot1.1.6/lowlevel.S详解
_TEXT_BASE:.word TEXT_BASE // 这个TEXT_BASE是在uboot1.1.6/board/smdk2410/config.mk内定义的,TEXT_BASE = 0x33F80000。config.mk内有注释,这个地址是规划用来运行uboot的SDRAM区域开始地址。所以这个地址定义在这里主要是给链接器使用的,让链接器在链接时,重定位步骤中,将uboot代码重定位原创 2014-10-19 16:54:01 · 563 阅读 · 0 评论 -
Linux -soname深入理解
-Wl 表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一个库都有一个soname,当连接器发现它正 在查找的程序库中有这样一个名称,连接器便会将soname嵌入连结中的二进制文件内,而不是它正在运行的实际文件名,在程序执行期间,程序会查找拥有 soname名字的文件,而不是库的文件名,换句话说,soname是库的区分标志。 这样做的原创 2014-10-19 16:53:45 · 1057 阅读 · 0 评论 -
如何写Makefile from 精华文章@chinaunix.net
[精华] 跟我一起写 Makefilehttp://www.chinaunix.net 作者:gunguymadman 发表于:2009-06-30 15:55:17【发表评论】【查看原文】【C/C++讨论区】【关闭】 陈皓 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工原创 2014-10-19 16:53:24 · 598 阅读 · 0 评论 -
NOR Flash的烧写方式
相对于硬件工程师和嵌进式软件工程师一般在完成设计之后经常需要验证FLASH是否在工作.在应用当中,也有很多时候需要对FLASH进行写操纵.该文章简单先容了基于ARM芯片的NOR FLASH烧写,并提供了2个具体的实例和源代码,希看对有需要的朋友有点帮助.在开始之前,先声明一下,这篇文章只是先容了如何写 NOR FLASH 的烧写驱动,和H-JTAG/H-FLASHER没有直接的联系.原创 2014-10-19 16:53:47 · 3403 阅读 · 0 评论 -
动态链接库
GNU体系下so的兼容性及so内各接口实现的兼容性主要通过两种措施来保证: 1) SONAME 2) 接口的符号版本 1. SONAME GNU版本命名规范一般是..,简称为x.y.z 。其中Major不要求兼容性;Minor要求接口的向后兼容,只增加新接口;release是bugfix。因此保证兼容性要求Major原创 2014-10-19 16:53:50 · 570 阅读 · 0 评论