gcc常用命令

-E:仅作预处理,不进行编译、汇编和链接,头文件、宏等展开(.i文件)
-S:预处理、编译;生成汇编代码(.s文件)
-c:预处理、编译、汇编;生成目标文件(.o文件)
-o:执行命令后生成文件的名称
-g:嵌入调试信息,方便gdb调试
-w:不生成任何警告
-Wall:生成所有的警告
-llib:链接 lib 库 (这里是小写 L ) 相当于 C++ #pragma comment(lib, “xxx.lib”)
-Idir:增加 include 目录 (这里是大写 i ) 头文件路径
-LDir:增加 lib 目录 (编译静态库和动态库)

分解步骤:

# 预处理,生成 hello.i 文件
gcc -E hello.c -o hello.i

# 编译,生成 hello.s 文件
gcc –S hello.i –o hello.s

# 链接,生成 hello.o 文件
gcc –c hello.s –o hello.o

# 生成可执行文件, 生成 hello 文件
gcc hello.o –o hello

一次生成可执行文件:

gcc hello.c –o hello

生成共享库:

gcc –shared –fPIC fun.o –o libFun.so
#此时生成 libFun.so 共享库

shared:生成动态库格式。
fPIC: 产生位置无关码,允许在任何地址加载相对地址,否则只能从指定地址加载,无法控制。

使用共享库:

gcc –Wall main.o –o main –L. -lFun
#此时生成 Program1.o目标文件 

–L.:增加库文件搜索目录(当前文件)
-lFun:使用动态库,只需要 -l + 文件名即可。

原文地址:https://www.cnblogs.com/chendeqiang/p/13092007.html