你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

嵌入式入门——带你看懂GCC!

[复制链接]
gaosmile 发布时间:2020-4-24 13:14
GCC程序编译过程
微信图片_20200424131018.png
GCC常用后缀名
微信图片_20200424131021.png

GCC使用方法

最基础也是最高端的方法

Linux环境下man gcc 命令查看帮助信息

# 在这里列举man的使用方法
回车 下一行
page up 上一行
page down 下一行
home[方向键左]第一页
end[方向键右] 最后一页
空格 下一页
b 上一页
q 退出
/string 从上往下搜索字符串string
?string 从下往上搜索字符串string
n 下一个搜索匹配项
N 上一个搜索匹配项

微信图片_20200424131026.png
命令使用
微信图片_20200424131029.png
手册
GCC参数汇总
微信图片_20200424131033.png
GCC常用参数
微信图片_20200424131036.png
编译过程参数
参数
作用
-c
只编译不链接,生成目标文件 .o
-S
只编译不汇编,生成汇编代码
-E
只预编译
-g
包含调试信息
-o 文件名
指定输出目标文件
-I 路径名
搜索头文件路径
库选项参数

linux下静态链接库和动态链接库格式

# 静态链接库
.a [libname.a]

# 动态链接库
.so [libname.so[主版本号.次版本号.发行号]]
例如 libgupnp-dlna-gst-2.0.so.3.0.0

在Linux系统中:

头文件存放路径一般为/usr/include

库文件存放路径一般为/usr/lib

参数
作用
-static
静态编译
-shared
生成动态库文件 进行的动态编译
-L 路径名
库文件搜索中添加路径
-fPIC
生成使用相对位置无关码的目标代码

默认情况下的编译为动态链接

编译静态链接库
  • 先生成目标文件 .o
  • ar crv [*.a] [*.o]
  • 调用静态链接库 gcc -o [file.c] -L [file.a]
编译动态链接库
  • 生成位置无关目标代码 gcc -fPIC -c [file.c]
  • 生成动态链接库 gcc -shared -o [*.so] [*.o]
  • 调用动态链接库 gcc -o [file] -L [file.so]
  • 为了使程序运行时加载动态链接库,将动态库拷贝到/usr/lib目录下
警告选项
参数
作用
-w
关闭所有警告
-Wall
发出gcc提供的所有有用警告
- pedantic
发出ansic的所有警告
优化选项
参数
作用
-O 优化等级
优化等级,一般只是最终发布的时候才用

收藏 评论2 发布时间:2020-4-24 13:14

举报

2个回答
goyhuan 回答时间:2020-4-25 15:08:06
学习
李康1202 回答时间:2020-4-25 17:13:43
谢谢分享

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版