gnu 连接器ld的操作 --whole-archive 和 --no-whole-archive

   --whole-archiveFor  each archive mentioned on the command line af-ter the --whole-archive option, include  every  ob-ject  file  in the archive in the link, rather thansearching  the  archive  for  the  required  objectfiles.   This  is  normally used to turn an archivefile into a shared library, forcing every object tobe included in the resulting shared library.--no-whole-archiveTurn  off  the effect of the --whole-archive optionfor archives which  appear  later  on  the  commandline.

–whole-archive选项解决的是编译中常遇到的问题。在代码中定义的符号(如函数名)还未使用到之前,链接器并不会把它加入到连接表中:

func.c

 ************************************************************************/
#include <stdio.h>
void func()
{printf("in %s\n", __func__);
}

main.c

#include<stdio.h>extern void func();int main()
{func();printf("in %s\n", __func__);return 0;
}

编译

➜ gcc -c func.c
➜ ar -r libfunc.a func.o
➜ gcc -L. -lfunc main.c -o main

报错
/tmp/ccFXELUM.o: In function main': main.c:(.text+0xa): undefined reference tofunc’
collect2: error: ld returned 1 exit status

解决方式为使用Wl,–whole-archive告诉连接器将func库中的符号全部加载到连接表中以备使用:

gcc -Wl,–whole-archive -L. -lfunc -Wl,–no-whole-archive main.c -o main

或者

gcc main.c -L. -lfunc -o main

ld --whole-archive 和 --no-whole-archive学习记录相关推荐

  1. oracle flashback archive,ORACLE Flashback Data Archive

    Flashback Data Archive 11g的新功能,有如下特性. 1.在有效期内保存事务改变的信息. 2.FDA包含一个或多个表空间,可以创建多个FDA,以sysdba登陆时,可以指定默认的 ...

  2. Membership学习记录

    Membership学习记录 ---自定义成员资格用户类型及相关提供程序 一.Web.config文件配制 因Membership是基于Forms验证,所以首先得在<system.web> ...

  3. Elasticseach 从零开始学习记录(二) - Head插件

    安装Head插件的原因: 可以提供友好的web界面,还可以实现基本信息的查看,rest请求的模拟,以及数据的基本检索. 1. 检查服务器是否已经安装node.js 如未安装,自行百度安装node 2. ...

  4. linux个人学习记录

    linux学习记录 资料: Linux 黑马程序员_bilibili AcWing Linux基础课 可能是东半球最全面易懂的 Tmux 使用教程! Shell 教程 | 菜鸟教程 (runoob.c ...

  5. 【ANSYS Sherlock学习记录】Part 1、导入ODB文件

    Ansys Sherlock学习记录 最近开始学习ANSYS Sherlock 学习资料按照官方的用户指南进行学习 Chapter 1:Sherlock 入门 Chapter 2:项目工作流程指南 C ...

  6. 海思3518ev200学习记录(2) - 交叉编译官方webRTC

    系列文章目录 海思3518ev200学习记录(1)- 根据用户手册烧录系统镜像 海思3518ev200学习记录(2) - 交叉编译官方webRTC 海思3518ev200学习记录(3) - 编译 am ...

  7. M312: Diagnostics and Debugging chapter 2 Tooling Overview学习记录

    M312: Diagnostics and Debugging chapter 2 Tooling Overview学习记录 运行环境 操作系统:windows 10 家庭中文版 Mongodb :M ...

  8. M103: Basic Cluster Administration chapter 1 The Mongod学习记录

    M103: Basic Cluster Administration chapter 1 The Mongod学习记录 运行环境 操作系统:windows 10 家庭中文版 Mongodb :Mong ...

  9. M103: Basic Cluster Administration chapter 0 Introduction学习记录

    M103: Basic Cluster Administration chapter 0 Introduction学习记录 运行环境 操作系统:windows 10 家庭中文版 Mongodb :Mo ...

  10. M312: Diagnostics and Debugging chapter 1 Introduction学习记录

    M312: Diagnostics and Debugging chapter 1 Introduction学习记录 运行环境 操作系统:windows 10 家庭中文版 Mongodb :Mongo ...

最新文章

  1. 编译linux内核报错‘make menuconfig‘ requires the ncurses libraries
  2. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 构造 Xml 节点类 | 封装节点名称、节点值、节点属性、子节点 | 将封装的节点数据转为 Xml 字符串 )
  3. c语言简易绘图程序代码,简单的鼠标绘图程序
  4. 腾讯正式进军电商:小鹅拼拼,出自微信
  5. 【实验】配置VRRP负载分担
  6. 如何给字体添加底色indesign_“美哉汉字”2020字体设计专家工作坊预告+报名
  7. 转走出MFC窗口子类化迷宫
  8. 问题 | kali2019.04版中文语言安装后就会乱码
  9. 程序员音乐_预订音乐会的程序员指南
  10. 短视频直播app源码——软件系统开发方案
  11. 耗时一个月,总结的Linux C++后台开发学习路线(已签腾讯sp,附学习资料)
  12. PS2021中使用Nik插件崩溃闪退|Nik Collection不兼容cc2021闪退的解决方法
  13. canvas+audio+range 模拟音乐播放器
  14. 两部门:禁止从蒙古国输入猪、野猪及其产品
  15. 【IOI2000】 邮局
  16. CentOS-7磁盘扩容之殇
  17. 旧电脑怎么升级到新版Win10
  18. 基于Ant Design vue框架登录demo
  19. 基于AD9850的多功能信号发生器
  20. [经验分享] 覃超直播课-入职新公司后,如何快速斩头露角

热门文章

  1. 在Matlab的伯德图中利用bode函数实现局部放大,实用
  2. Access-Control-Max-Age是什么?
  3. Arduino空气污染温湿度MQ135烟雾检测报警ESP8266 手机App socket
  4. 王咏刚《AI的产品化和工程化挑战》
  5. 迅雷投身区块链,两年投入3亿开发共享计算及区块链
  6. C#_DataTable简介
  7. 从三国的人物身上我们能学到些啥?
  8. 设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
  9. 在js中使用ejs标签,js中引用ejs变量
  10. 进化算法可以不再需要计算集群,开普敦大学的新方法用一块GPU也能刷新MNIST记录...