首页 > 其他分享 >编译时去除未使用的依赖库

编译时去除未使用的依赖库

时间:2023-06-15 17:58:30浏览次数:44  
标签:依赖 x86 lib gnu 去除 编译 64 so.6 linux

如下, --no-as-needed 会把所有指定的库标记为 NEEDED, 即使没用到; --as-needed 会忽略没用到的库;

$ cc -Wl,--no-as-needed xx.c -ldl -lz -lm -l pthread
$ ldd a.out
        linux-vdso.so.1 (0x00007fffc03d1000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fad234ae000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fad23491000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fad2334d000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fad2332b000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fad23156000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fad234c5000)
$ cc -Wl,--as-needed xx.c -ldl -lz -lm -l pthread
$ ldd a.out
        linux-vdso.so.1 (0x00007ffeb7df8000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f88d1ec3000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f88d20a9000)
$

标签:依赖,x86,lib,gnu,去除,编译,64,so.6,linux
From: https://www.cnblogs.com/sinpo828/p/17483641.html

相关文章

  • cryptopp 交叉编译
    1、下载地址https://www.cryptopp.com/#download2、解压后进入对应目录3、执行:exportCXX=aarch64-linux-gnu-g++   说明:aarch64-linux-gnu-g++为交叉编译器4、执行:exportCXXFLAGS="-O2-fPIC-pipe-Wall-shared"   说明:这样得到的静态库和动态库会比不执行此步......
  • wsl编译android13源码并刷入pixel6
    wsl编译环境环境依赖参考编译android10时设置的环境https://www.cnblogs.com/revercc/p/16826591.html,这里注意wsl使用的ext4文件系统,此文件系统区分大小写,而windows由于历史原因使用的是NTFS文件系统,此文件系统默认是不区分大小写的。所以在wsl的共享目录中需要开启区分大小写......
  • 前端npm下载node_modules依赖的时候报错
    使用npminstall--legacy-peer-deps,报如下图:解决办法:修改hosts文件找到如下文件夹:C:\Windows\System32\drivers\etc下的hosts文件使用工具把hosts文件打开185.199.108.133raw.githubusercontent.com185.199.109.133raw.githubusercontent.com185.199.110.133raw.githu......
  • 编译make 4.2.1
    下载源码https://mirrors.tuna.tsinghua.edu.cn/gnu/make/make-4.2.1.tar.gz编译并安装tarxzvfmake-4.2.1.tar.gzcdmake-4.2.1./configure--prefix=/home/wangyuan/soft//*如果当前系统中没有安装make/./build.sh/如果安装了make*/make./makeinstall错误解决......
  • .NET7 中Autofac依赖注入整合多层,项目中可直接用
    目录一、配置Autofac替换内置DI二、构造函数注入三、属性注入四、批量注入五、手动获取实例六、其它用法1.不用接口,直接注入实例 2.一接口多实现 回到顶部一、配置Autofac替换内置DI1.安装Nuget包:Autofac.Extensions.DependencyInjection 2.Program.cs......
  • .NET7 中Autofac依赖注入整合多层,项目中可直接用
    一、配置Autofac替换内置DI1.安装Nuget包:Autofac.Extensions.DependencyInjection 2.Program.cs中加上builder.Host.UseServiceProviderFactory(newAutofacServiceProviderFactory());builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder=>{//在......
  • CUDA编译设置
    CUDA版本和GPU卡的对应关系,以及编译设置:Fermi (CUDA3.2untilCUDA8) (deprecatedfromCUDA9):SM20orSM_20,compute_30–Oldercardssuchas GeForce400,500,600,GT-630Kepler(CUDA5andlater):SM30orSM_30,compute_30–Keplerarchitecture(ge......
  • Java中String类型能够存放多大的数据量?编译器只支持String只能存放65535个字符,运行时
    Java中String类型能够存放多大的数据量?https://blog.csdn.net/weixin_52707625/article/details/125583678最近在编写博客系统时,在文章上传遇到了个问题:到底使用什么来接收文章呢?String类型能接收多大的数据量?随后,我去网上找了一下,发现都是说String只能存放65535个字符啊......
  • Ubuntu 源代码编译安装 Nginx
    建立nginx用户和用户组sudogroupaddnginxsudouseraddnginx-gnginx-s/sbin/nologin-M在线安装依赖sudoapt-yinstallgccmakeopenssllibssl-devlibpcre3libpcre3-devlibgd-devvimwgetnet-tools下载并解压nginx源代码wgethttp://nginx.org/download/nginx-1.24......
  • 编译原理动手实操,用java实现编译器-算术表达式及其语法解析器的实现
     本节代码下载地址:http://pan.baidu.com/s/1sjWiwPn代码的理解和运行是吃透编译原理的关键,如果我们看的是爱情动作片,自然选择无码的好,但如果看得是计算机课程,则必须有码,无码的计算机理论都是耍流氓。当前,java所实现的简易编译器目的是将一条或一组含有加号和乘号的算术表达式编译......