您的位置:首页 > 其它

gcc 和 make的使用

2014-04-26 10:53 120 查看
1. 宏定义指令

经常使用的伪指令有#define 和 #undef 。对于#define ,其使用方法为” #define name string “ .预编译程序将源程序中出现的"name" 的地方用"string"进行替换。但是对于字符串常量中的“name"则不会替换。

2. 条件编译指令

#ifdef , #ifndef , #else , #elif , #endif

比如打印调试信息:

int main()

{

#ifdef DEBUG

fprintf(stderr , "Debug information...\n");

#endif

......

}

测试环境下编译:gcc -DDEBUG xxx.c -o xxx

正式环境下编译:gcc xxx.c -o xxx

3. gcc常用语法

-c:只进行编译,而不进行链接。输出一个与源文件同名的.o文件

-o:链接生成可执行文件。可指定生成文件的名称。如 -o name

-I dirname:将dirname所指的目录加入到“头文件搜索目录列表”中。

-L dirname:将dirname所指的目录加入到“函数库(.a , .so)搜索目录列表“中

-lname:在链接的过程中加载名字为”libname.a"的函数库。例如,-lc表示链接名为“libc.a”的函数库。

4. 生成动态链接库

编译:fcc -fPIC -c xxx.c

-fPIC 选项的含义是通知gcc 编译器产生可以重定位的目标代码

链接:gcc -shared -o libxxx.so xxx.o

通过链接,即可生成动态链接库

5. make 和 makefile

make 通过makefile文件来描述源程序之间的相互关系

基本语法:

目标文件:依赖的文件(可以是多个)

<Tab> Command

例子:

edit : main.o libedit.o

gcc -o edit main.o libedit.o

main : main.c

gcc -c mian.c

libedit.o : libedit.c libedit.h

gcc -c libedit.c

clean :

rm main.o libedit.o
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: