GCC详解-gcc之-Wl选项
1、介绍
-Wl后面的东西是作为参数传递给链接器ld的。比如:
gcc -Wl,aaa,bbb,ccc
最后会被解释为:
ld aaa bbb ccc
2、-Wl,-Map=xxx.txt 生成map文件
如下会生成map文件mymap.txt。
gcc -Wl,-Map=mymap.txt -g main.c -o main
3、 -Wl,-Bstatic 和 -Wl,-Bdynamic 指定链接动态库或者静态库
-Wl,-Bstatic -laaa -lbbb -lccc -Wl,-Bdynamic -lddd -l ccc
-Wl,-Bstatic 后面的库是静态链接的;
-Wl,-Bdynamic 后面的都是动态链接的。
4、 -Wl,--as-needed和 -Wl,--no-as-needed
在生成可执行文件的时候,通过 -lxxx 选项指定需要链接的库文件,连接器会在可执行文件的文件头中会记录下该库的信息。
在可执行文件运行的时候,动态加载器会读取文件头信息,并加载所有的链接库。
在这个过程中,如果用户指定链接了一个毫不相关的库,则这个库在最终的可执行程序运行时也会被加载,如果类似这样的不相关库很多,会明显拖慢程序启动过程。
通过指定 -Wl,--as-needed 选项,链接过程中,链接器会检查所有的依赖库,没有实际被引用的库,不再写入可执行文件头。最终生成的可执行文件头中包含的都是必要的链接库信息。
-Wl,--no-as-needed 选项不会做这样的检查,会把用户指定的链接库完全写入可执行文件中。
GCC详解-gcc之-Wl选项相关推荐
- Gcc详解以及静态库、动态库生成
[转] Gcc详解以及静态库.动态库生成 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 1.gcc包含的c/c++编译 ...
- Shell test命令(Shell [])详解,附带所有选项及说明
test 是 Shell 内置命令,用来检测某个条件是否成立.test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test. test 命令有很多选项,可以进行数值.字符串和文件三个方 ...
- GCC详解的-Wl选项说明与测试
在GCC编译程序时,由于GCC命令不仅能够编译,也能够链接程序,GCC链接程序是通过ld命令实现.那如何将GCC的命令行参数传递给ld命令呢.通常在编译时通过使用-Wl这个选项来实现的. 测试例程 测 ...
- GCC详解的-Wl选项说明
在GCC编译程序时,由于GCC命令不经能够编译,也能够链接程序,GCC链接程序是通过ld命令实现的,如何将GCC的命令行参数传递给ld命令呢,这就是通过-Wl,来实现的. 格式如下: gcc -Wl, ...
- 详解GCC的下载和安装
GCC是Linux平台下最常用的编译程序,它是Linux平台编译器的事实标准.同时,在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器.本文将告诉读者如何下载并按照GCC. 下载 在 ...
- 《嵌入式 - 深入剖析STM32》STM32 启动流程详解(GCC)
开发环境: 处理器:STM32F103 GCC:10.3.1 对于我们常用的桌面操作系统而言,我们在开发应用时,并不关心系统的初始化,绝大多数应用程序是在操作系统运行后才开始运行的,操作系统已经提供了 ...
- GCC详解-Binutils工具之strip
1.介绍 strip经常用来去除目标文件中的一些符号表.调试符号表信息,以减小静态库.动态库和程序的大小.其基本用法: strip xxx 或者 strip xxx -o yyy 2.优缺点 优点:s ...
- 关于GCC/LLVM编译器中的sanitize选项用处用法详解
关于GCC/LLVM编译器中的sanitize选项用处用法详解 编译器中sanitize选项原本来自google的开源C/C+ +工具集sanitizers项目, 包括了AddressSaniti ...
- Linux平台Makefile文件的编写基础篇和GCC参数详解
问:gcc中的-I.是什么意思....看到了有的是gcc -I. -I/usr/xxxxx..那个-I.是什么意思呢 最佳答案 答:-Ixxx 的意思是除了默认的头文件搜索路径(比如/usr/incl ...
最新文章
- mmdetection2.3.0版本安装过程,以及训练、测试、可视化等(亲测好用,很顺利)
- 文巾解题 1646. 获取生成数组中的最大值
- Scikit-learn 数据预处理之鲁棒缩放RobustScaler
- SAP UI5 message.showMessageToast
- Python数据结构常见的八大排序算法(详细整理)
- Swagger2接口注释参数使用数组
- java eclipse svn_[Java教程]Eclipse 安装 SVN 的在线插件
- JS不间断无缝滚动 (兼容火狐和IE)
- Yahoo!团队实践分享:网站性能优化的34条黄金守则(二)
- 实现labelme批量json_to_dataset方法
- 【吐槽】火车票一票难求啊
- MySql中PreparedStatement对象与Statement对象
- QCC300X 充电配置 调试笔记
- 阿里架构师墙裂推荐Java岗实战文档:Spring全家桶+Docker+Redis
- php微信公众号样式模板下载,PHP微信公众平台自定义菜单
- 现代计算机eniac的诞生,eniac诞生于哪一年(第一台电脑eniac诞生在哪国)
- 后羿采集器怎么导出数据_怎么安装后羿采集器?后羿网页数据采集器安装教程...
- hihocoder #1163 : 博弈游戏·Nim游戏
- 什么是VOIP-网络电话名词详解
- MFC 实现打印机打印功能