软讯网络 > 软件时空 > 软件相关 > 明白链接的奥秘
【标 题】:明白链接的奥秘
【关键字】:
【来 源】:http://www.cublog.cn/u/17192/showart.php?id=176002
明白链接的奥秘

平时我们都只用一条gcc指令就完成了程序的预编译,编译,汇编及链接等过程,很多的开发环境连手动调用gcc都省去了,这常使我们搞不清里面的奥秘。 如果是手动调用gcc,那么对各个模块的书写顺序是有要求的。比如源代码a调用了b里的一个函数,那么b就必须出现在a的后面(gcc -o example a.c b.c),否则会报错说找不到函数定义。所以库函数都要放在最后。若是库a.lib依赖b.lib,也和前面用法一样,此时最好的做法是把两个库合并成一个。这就是我们强调的强内聚,松耦合吧。 对于c的定义分成强类型和弱类型——针对全局变量而言,因为只有全局变量才会被别的模块引用。因此尽量用static来定义模块内的变量,避免造成名字空间的污染。已经附初值的全局变量是强类型的,未附初值的变量是弱类型的。gcc链接按照以下规则来引用外部变量。 *若有两个同名的强类型变量,则报错。 *若两个同名变量,一个是强类型,一个是弱类型,则引用强类型 *若是两个弱类型,则任选一个以上内容都是从《深入理解计算机系统》这本书得来的。大家可以找来看,这本书绝对超值。这算是我个人的读书笔记吧。由于把代码写出来太麻烦了,请见谅。
【相关文章】
没有相关文章