
gcc 的使用
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
使用 设置环境变量 将库文件放入系统标准目录(如
将 设置 配置
发布日期:2021-05-07 21:03:45
浏览次数:22
分类:精选文章
本文共 1608 字,大约阅读时间需要 5 分钟。
GCC 编译器详解
一、GCC 编译过程
GCC 编译器是 Linux 下默认的 C/C++ 编译器,广泛应用于开发高性能程序。以下是 GCC 编译过程的详细步骤:
预处理(-E)
GCC 在编译前会执行预处理步骤,展开宏、包含头文件等操作。编译(-c)
预处理完成后,GCC 会将源代码转化为汇编语言文件(.i)。汇编(-c)
汇编语言文件经过汇编后,生成目标文件(.o)。链接
最终,GCC 会将多个目标文件和库文件链接到一个可执行文件中。生成可执行文件
gcc -E hello.c -o hello.igcc -S hello.i -o hello.sgcc -c hello.s -o hello.o# 链接,生成可执行文件gcc hello.s -o hello
一次性生成可执行文件
gcc hello.c -o hello
二、GCC 编译选项
1. -o
生成目标文件
指定编译输出文件的名称和类型。例如:gcc -o hello hello.c
。
2. -c
生成编译结果
跳过链接步骤,直接生成可执行文件。例如:gcc -c hello.c -o hello.o
。
3. -E
预处理
仅执行预处理步骤,不生成汇编文件。例如:gcc -E hello.c
。
4. -S
汇编
生成汇编语言文件。例如:gcc -S hello.c -o hello.s
。
5. -Wall
编译警告
打开所有编译警告。默认情况下启用。
6. -g
调试信息
嵌入调试信息,支持后续使用 gdb
调试。例如:gcc -g -o hello hello.c
。
7. -l
链接库
指定要链接的库文件。例如:gcc -lmath hello.c -o hello
。
8. -L
银行路径
指定库文件所在目录。例如:gcc -L/usr/lib -lmath hello.c -o hello
。
9. -I
头文件路径
添加头文件搜索路径。例如:gcc -Iinclude -o hello hello.c
。
10. -D
预定义宏
定义预定义宏。例如:gcc -DDEBUG hello.c -o hello
。
11. -O
优化
优化编译结果。默认为 -O0
,无优化;-O2
为常用优化级别。
12. -shared
生成共享库
将程序编译为共享库。例如:gcc -shared -fPIC -o libFun.so fun.c
。
13. -fPIC
位置无关代码
生成与内存位置无关的代码,便于共享库。与 -shared
通常配合使用。
三、多模块编译
一次性编译
gcc -Wall fun.c main_fun.c -o main_fun
独立编译
gcc -Wall -c main_fun.c -o main_fun.ogcc -Wall -c fun.c -o fun.ogcc -Wall main_fun.o fun.o -o main_fun
四、静态库(.a)
生成静态库
gcc -c fun.c -o fun.oar rcs libfun.a fun.o
使用静态库
gcc -Wall main.c -o main -L. -lfun
静态库搜索路径
-L
指定目录LIBRARY_PATH
/usr/lib
)五、共享库(.so或.sa)
生成共享库
gcc -shared -fPIC fun.c -o libFun.so
使用共享库
gcc -Wall main.o -o main -L. -lFun
共享库配置
.so
放在共享目录(如 /usr/lib
)LD_LIBRARY_PATH
/etc/ld.so.conf
并运行 ldconfig
通过以上命令,您可以高效地使用 GCC 编译器进行开发。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月17日 16时20分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux 报错文本文件忙是怎么回事,无法解决,求解??????????、
2019-03-15
形状类似小于等于号的符号是啥
2019-03-15
C#中combox下拉框禁止键盘输入
2019-03-15
我的shell编程进阶(一)-变量
2019-03-15
flask+表单+ajax
2019-03-15
遇到问题之-yum update无法连接镜像问题解决
2019-03-15
环境篇:CM+CDH6.3.2环境搭建(全网最全)
2019-03-15
遇到问题之-httpd服务启动报错182行错误
2019-03-15
电脑关机的快捷键
2019-03-15
【uni-app框架的H5端】Vue项目多域名跨域【有坑】
2019-03-15
panda中的apply方法和applymap方法的用法区别总结
2019-03-15
【python量化】国内外基于python开发的量化回测框架【catalyst为例】
2019-03-15
pycharm如何设置(错误、警告类的标准提醒)
2019-03-15
PHP是世界上最好的语言?Phython第一个不服
2019-03-15
程序员就地过年,怎样才能更有意义?
2019-03-15
Bugku CTF-web6
2019-03-15