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选项相关推荐

  1. Gcc详解以及静态库、动态库生成

    [转] Gcc详解以及静态库.动态库生成 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 1.gcc包含的c/c++编译 ...

  2. Shell test命令(Shell [])详解,附带所有选项及说明

    test 是 Shell 内置命令,用来检测某个条件是否成立.test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test. test 命令有很多选项,可以进行数值.字符串和文件三个方 ...

  3. GCC详解的-Wl选项说明与测试

    在GCC编译程序时,由于GCC命令不仅能够编译,也能够链接程序,GCC链接程序是通过ld命令实现.那如何将GCC的命令行参数传递给ld命令呢.通常在编译时通过使用-Wl这个选项来实现的. 测试例程 测 ...

  4. GCC详解的-Wl选项说明

    在GCC编译程序时,由于GCC命令不经能够编译,也能够链接程序,GCC链接程序是通过ld命令实现的,如何将GCC的命令行参数传递给ld命令呢,这就是通过-Wl,来实现的. 格式如下: gcc -Wl, ...

  5. 详解GCC的下载和安装

    GCC是Linux平台下最常用的编译程序,它是Linux平台编译器的事实标准.同时,在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器.本文将告诉读者如何下载并按照GCC. 下载 在 ...

  6. 《嵌入式 - 深入剖析STM32》STM32 启动流程详解(GCC)

    开发环境: 处理器:STM32F103 GCC:10.3.1 对于我们常用的桌面操作系统而言,我们在开发应用时,并不关心系统的初始化,绝大多数应用程序是在操作系统运行后才开始运行的,操作系统已经提供了 ...

  7. GCC详解-Binutils工具之strip

    1.介绍 strip经常用来去除目标文件中的一些符号表.调试符号表信息,以减小静态库.动态库和程序的大小.其基本用法: strip xxx 或者 strip xxx -o yyy 2.优缺点 优点:s ...

  8. 关于GCC/LLVM编译器中的sanitize选项用处用法详解

    关于GCC/LLVM编译器中的sanitize选项用处用法详解 ​ 编译器中sanitize选项原本来自google的开源C/C+ +工具集sanitizers项目, 包括了AddressSaniti ...

  9. Linux平台Makefile文件的编写基础篇和GCC参数详解

    问:gcc中的-I.是什么意思....看到了有的是gcc -I. -I/usr/xxxxx..那个-I.是什么意思呢 最佳答案 答:-Ixxx 的意思是除了默认的头文件搜索路径(比如/usr/incl ...

最新文章

  1. mmdetection2.3.0版本安装过程,以及训练、测试、可视化等(亲测好用,很顺利)
  2. 文巾解题 1646. 获取生成数组中的最大值
  3. Scikit-learn 数据预处理之鲁棒缩放RobustScaler
  4. SAP UI5 message.showMessageToast
  5. Python数据结构常见的八大排序算法(详细整理)
  6. Swagger2接口注释参数使用数组
  7. java eclipse svn_[Java教程]Eclipse 安装 SVN 的在线插件
  8. JS不间断无缝滚动 (兼容火狐和IE)
  9. Yahoo!团队实践分享:网站性能优化的34条黄金守则(二)
  10. 实现labelme批量json_to_dataset方法
  11. 【吐槽】火车票一票难求啊
  12. MySql中PreparedStatement对象与Statement对象
  13. QCC300X 充电配置 调试笔记
  14. 阿里架构师墙裂推荐Java岗实战文档:Spring全家桶+Docker+Redis
  15. php微信公众号样式模板下载,PHP微信公众平台自定义菜单
  16. 现代计算机eniac的诞生,eniac诞生于哪一年(第一台电脑eniac诞生在哪国)
  17. 后羿采集器怎么导出数据_怎么安装后羿采集器?后羿网页数据采集器安装教程...
  18. hihocoder #1163 : 博弈游戏·Nim游戏
  19. 什么是VOIP-网络电话名词详解
  20. MFC 实现打印机打印功能

热门文章

  1. 小鸡手柄或其他手柄导致的电脑无法熄屏休眠问题
  2. Linux--环境变量和进程地址空间
  3. 【数据结构】红黑树入门知识
  4. 考驾照自我总结(待更新修正)
  5. 宜信支付结算账户系统浅析
  6. 很简单能看懂阿里数据中台分析
  7. 浅析Android地理定位(GPS)
  8. java 自动生成条形码_JAVA生成商品条形码
  9. android 内存不足警告,安卓手机老是提示内存不足怎么办
  10. windows下忘记mysql密码,跳过登录进入mysql解决方案