编译链接
知耻而后勇的蜗牛
这人很懒
展开
-
编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。动态库而言:某个程序在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让转载 2013-12-31 18:54:47 · 1613 阅读 · 0 评论 -
编译链接-----强制链接一个函数
1、有时候,我们在程序里定义了一个函数,但是没有显式的调用它,只是用于其它目的比如方便调试。我们不想让编译器将它优化掉。这个时候,可以使用GCC扩展语法,来指定该函数需要保留。这在GCC源代码中也被用到,例如:#if (GCC_VERSION > 4000)#define DEBUG_FUNCTION __attribute__ ((__used__))#define DEBUG_转载 2013-12-22 17:04:51 · 1987 阅读 · 0 评论 -
编译链接-----Linux下的lds链接脚本简介
一、 概论每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本, 可用ld –verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响?).-转载 2013-12-22 17:21:08 · 2363 阅读 · 0 评论 -
Makefile-----编译目录下多个文件
编译多个c文件一般有两个功能,一个是每个c文件都有main函数,就是说每个c文件的可执行文件是独立的,各自是各自的;第二个是多个c文件用来编译成一个可执行文件。首先说第一个,内容如下,这个makefile是为了编译opencv代码的。[cpp] view plaincopyCFLAGS= -g -O3 `pkg-config转载 2013-12-22 17:23:28 · 1291 阅读 · 0 评论 -
编译链接------nm 命令
用途显示有关对象文件、可执行文件以及对象文件库里的符号信息。语法nm [ -A ] [ -C ] [ -X {32|64|32_64|d64| any}] [ -f ] [ -h ] [ -l ] [ -p ] [ -r ] [ -T ] [ -v ] [ -B | -P] [ -e | -g | -u ] [ -d | -o | -转载 2014-01-12 21:43:08 · 1470 阅读 · 0 评论 -
Makefile------宏、if条件、shell命令的使用
main.c#include int main(void){ int i;#ifdef FLAG i = 1;#else i = 3;#endif printf(" i = %d \n", i); return 0;}MakefileCC=gccinput_flag=ifdef input_flagCFLAGS= -D $(input_原创 2014-01-25 18:30:41 · 7807 阅读 · 1 评论