建议先安装
build-essential. 使用
GCC
链接可分为动态链接和静态链接:
- 动态链接使用动态链接库进行链接,生成的程序在执行的时候需要加载所需的动态库才能运行。动态链接生成的程序小巧,但是必须依赖动态库,否则无法执行。
- Linux下的动态链接库实际是共享目标文件(shared object), 一般是.so 文件, 作用类似于 Windows 下的.dll 文件。
- 静态链接使用静态库进行链接,生成的程序包含程序运行所需要的全部库,可以直接运行,不过体积较大。
- Linux 下静态库是汇编产生的.o 文件的集合,一般以.a 文件形式出现。
- gcc 默认是动态链接,加上-static参数则采用静态链接.
编译时链接库文件
库文件一般为
*.a或者*.so.
gcc *.c 库文件绝对路径
编译优化
注意开启优化后无法进行调试.
gcc -Os *.c
生成共享库文件
即
*.so
gcc -fpic -shared *.c -o lib*.so
make
基本语法
.PHONY:伪目标名
目标: 依赖文件
(TAB)生成目标执行文件的命令(gcc ...)
注释: 顶格#.
make clean
clean:
-rm -r *
-rm中的-表示忽略报错.
自定义变量
同shell, 建议所有变量应用时候都用括号括起来, 比如$(VAR).
I/O
#include<sys/types.h> /* 定义数据类型,如 ssize_t,off_t 等 */
#include <fcntl.h> /* 定义 open,creat 等函数原型,创建文件权限的符号常量 S_IRUSR 等 */
#include <unistd.h> /* 定义 read,write,close,lseek 等函数原型 */
#include <errno.h> /* 与全局变量 errno 相关的定义 */
#include <sys/ioctl.h> /* 定义 ioctl 函数原型 */
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!