Linux C 学习笔记 day_01

1,

#ifndef都是一种宏定义判断,作用是防止多重定义。

#ifndef是if not define的简写。

一般的使用场景为: 

1)、头文件中使用,防止头文件被多重调用

2)、作为测试使用,省去注释代码的麻烦

3)、作为不同角色或者场景的判断使用。

头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 

还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: 

#ifndef <标识> 

#define <标识> ...... 

#endif 

2,GCC 编译器

GCC 编译流程:

1)预处理(Pre-Processing)

2)  编译 (Compiling)

3) 汇编 (Assembling)

4) 链接 (Linking)

GCC 基本语法

gcc [option] [filename]

gcc -E -o [目标文件] [编译文件]

gcc -E -o hello.i hello.c 预处理

gcc -S -o hello.s hello.i 编译 

gcc -c hello.s -o hello.o 汇编

gcc hello.o -o hello 链接

./hello

3,GCC 使用函数库

Linux 中函数库; 静态库,共享库

静态库的代码在编译时就已经连接到开发人员开发的应用程序中,而共享库是在程序开始运行时被加载的

系统库可用的库都安装在 /usr/lib 和 /lib 目录下,库文件名由前缀lib,库名以及扩展名所组成,根据库的类型不同,扩展名也不同

共享库的扩展名由.so和版本号组成

静态库的扩展名为.a

 

相关路径选项(这一块有点不懂)

 

posted on 2019-03-11 21:05  只知-坚持  阅读(124)  评论(0)    收藏  举报

导航