首页 > 其他分享 >【编译优化】降低镜像大小,删减未使用的函数和数据

【编译优化】降低镜像大小,删减未使用的函数和数据

时间:2023-10-05 10:11:45浏览次数:69  
标签:删减 编译 使用 镜像 sections 链接

gnu解释

https://gcc.gnu.org/onlinedocs/gnat_ugn/Compilation-options.html
从最终可执行镜像中删除未使用的function和data,是由链接器来完成的。需要以下几个步骤

  1. function和data编译成单独的section,使用编译参数:-ffunction-sections -fdata-sections
  2. 链接时删除未使用的段,使用链接命令:-Wl,--gc-sections

以上编译和链接参数必须同时使用,才能达到删除的效果。

Ref

arm clang 编译命令,有较详细的介绍:https://developer.arm.com/documentation/dui0774/l

副作用

使用这种方法并不一定能降低镜像的大小。因为他会把一些BSS变量放到代码段,从而增加text段的大小。

标签:删减,编译,使用,镜像,sections,链接
From: https://www.cnblogs.com/lvzh/p/17743109.html

相关文章

  • 魔改的vcpkg编译脚本
    `bash!/bin/shFind.vcpkg-root.vcpkgRootDir=$(X=cd--"$(dirname--"$0")"&&pwd-P)while["$vcpkgRootDir"!="/"]&&![-e"$vcpkgRootDir/.vcpkg-root"];dovcpkgRootDir="$(di......
  • [CPP] CPP的编译链接过程
    手写的源代码本质上只是一串文本,但是在编译器里点一下编译就可以直接看到程序的输出,从文本到执行输出之间发生了什么 源代码到可执行程序大致经历以下几个过程         1、预编译(Preprocessing)预编译阶段主要做四件事:头文件展开,宏替换,执行预编译......
  • 解决交叉编译产生的程序放到目标板上运行时出现Segmentation fault (core dumped)
    原文:https://blog.csdn.net/qq_36219010/article/details/100163134在PC机上编译一段程序:arm-linux-gnueabihf-gcc-ohellohello.c这里产生hello文件用FTP传输到目标板上(树莓派3B+),运行时出现:报告段错误。后来我又试了不输出指定的文件名:arm-linux-gnueabihf-gcchello.c......
  • dpdk 编译
     引用: https://zhuanlan.zhihu.com/p/56670068720.11版本 DPDK(DataPlaneDevelopmentKit)是数据平面开发工具包,由用于加速在各种CPU架构上运行的数据包处理的库组成。DPDK需要一定的网卡硬件支持,以Intel为例,支持以下网卡: 下面带大家过一遍编译流程,扫清后续应用的......
  • 将Ubuntu/Debian打包成自己的ISO镜像
    目录前奏安装systemback安装make安装cdtools在图形化中打开systemback用新生成的镜像重新装OS前奏Ubuntu22.04.1LTS/16G/8U#设置固定IPrambo@test:~$cat/etc/netplan/01-network-manager-all.yaml#LetNetworkManagermanagealldevicesonthissystemnetwor......
  • CSS预编译:提升样式开发效率与可维护性的关键工具
    ......
  • 【TypeScript学习】—编译选项(三)
    【TypeScript学习】—编译选项(三)一、自动编译文件tscxxx.ts-w二、自动编译整个项目三、编译器选项......
  • Android 编译和使用libpng
    libpnglibpngistheofficialPNGreferencelibrary.ItsupportsalmostallPNGfeatures,isextensible,andhasbeenextensivelytestedforover28years.Thehomesitefordevelopmentversions(i.e.,maybebuggyorsubjecttochangeorincludeexperimen......
  • 【Docker】镜像的创建、管理与发布
    镜像的获取镜像可以从以下方式获得:从远程镜像仓库拉取,可以是公有仓库,也可以是私有仓库从Dockerfile构建从文件导入(离线)从容器提交镜像的基本操作跟镜像相关的命令如下:$dockerimage--helpUsage:dockerimageCOMMANDManageimagesCommands:buildBuildanimage......
  • 镜像源地址
    博客地址:https://www.cnblogs.com/zylyehuo/清华:https://pypi.tuna.tsinghua.edu.cn/simple中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学:http://pypi.hustunique.com/山东理工大学:http://pypi.sdutlinux.org/豆瓣:http://pypi.douban.com/simple/......