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
相关路径选项(这一块有点不懂)
浙公网安备 33010602011771号