Linux(Centos 7.6)命令详解:ldd

【Linux小命令】一文讲清ldd命令及使用场景 博主今天ubuntu编译go项目出来的一个可执行文件,放centos运行发现居然依赖于XXlib库。然后我一下就想到两个系统库版本不一致,重编。换系统,导项目,配环境……等等,编出来的文件为啥还需要lib库??然后使用ldd命令查看,显示除了依赖的共享库文件。但是为啥会依赖呢?一会儿我们会主要介绍ldd命令的功能。比较正常编译出来的go程序的设置 go env 发现不同的只有两个参数区别,这里博主去查看了一下这个环境变量的用处。 阅读详情

1.命令作用

打印共享库依赖项(print shared library dependencies.)

2.命令语法

Usage: ldd [OPTION]... FILE...

3.参数详解

OPTION:

  • --help,打印帮助信息并退出
  • --version,打印版本信息并退出
  • -d, --data-relocs,检测‌数据段重定位问题‌(如全局变量缺失)
  • -r, --function-relocs,检测‌函数与数据段重定位问题‌(组合诊断)
  • -u, --unused,列出‌被链接但未使用的直接依赖库
  • -v, --verbose,打印所有信息

注意:

  • ldd不是一个可执行程序,而只是一个Shell 脚本;ldd /bin/cat 相当于执行/lib64/ld-linux-x86-64.so.2 --list /bin/cat
  • ldd实质是通过/lib64/ld-linux-x86-64.so.2 (32位系统文件为ld-linux.so)的elf动态库的装载器来实现的;虽然看起来是共享库文件,但实际上他们可以独立运行,他们的功能是负责动态加载

4.常用用例 

4.1.设置环境变量,执行命令时仅打印依赖关系,不真正执行命令

[root@node1 ~]# export LD_TRACE_LOADED_OBJECTS=1
[root@node1 ~]# ldd ls
	linux-vdso.so.1 =>  (0x00007ffe6c76a000)
	libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f8a8a813000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f8a8a60f000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f8a8a242000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f8a8aa3d000)
[root@node1 ~]# ls
	linux-vdso.so.1 =>  (0x00007ffc55db2000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fa7f3b4d000)
	libcap.so.2 => /lib64/libcap.so.2 (0x00007fa7f3948000)
	libacl.so.1 => /lib64/libacl.so.1 (0x00007fa7f373f000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fa7f3372000)
	libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fa7f3110000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fa7f2f0c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa7f3d74000)
	libattr.so.1 => /lib64/libattr.so.1 (0x00007fa7f2d07000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa7f2aeb000)
[root@node1 ~]# unset LD_TRACE_LOADED_OBJECTS
[root@node1 ~]# ls
Desktop      download      Music   script  Videos     Documents       Public
[root@node1 ~]# 

4.2.提示一些so文件不存在,使用ldd查看对应so文件依赖

# 错误提示:Can''t open lib '/usr/lib/oracle/10.2.0.4/client/libsqora.so.10.1' : file not found
[root@node1 ~]# ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
linux-vdso.so.1 == (0x00007fff99b1d000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fbcb52f1000)
libm.so.6 => /lib64/libm.so.6(0x00007fbcb506c000)
libodbcinst.so.1 =>not found (0x00007fbcb20b5000)  ## 输出会提示未发现的so文件
libc.so.6 => lib64/libc.so.6(0x00007fbcb1d23000)
\lib64/ld-linux-x86-64.so.2(0x000000393aa00000)
linux命令--ldconfig和ldd用法 一、ldconfigldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig。 ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓 阅读详情

相关推荐

AMEsim柱塞泵的建模学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、为什么要对柱塞泵进行仿真?二、Amesim中柱塞泵的模型1.amesim中自己的定排量五柱塞的斜盘柱塞泵2.压力、流量仿真总结 前言 最近在学习Amesim进行柱塞泵的仿真学习,顺便在这里记录我的学习过程,这是我的初衷 提示:以下是本篇文章正文内容,下面案例可供参考 一、为什么要对柱塞泵进行仿真? 柱塞泵是功能和动力学比较复杂的流体机械。而在实际实验中,往往没有条件或者需要对柱塞泵做一些优化,所以需要我们利用仿真...

innocent_cft的博客 8179

Linux系统下查看动态库依赖关系指令(ldd)

下面介绍一下在Linux系统下利用ldd指令查看动态库依赖关系;

AnChenliang_1002的博客 1万+

BeikeShop跨境电商独立站系统V1.5.0免授权全开源版

BeikeShop 一款开源好用的跨境电商系统,BeikeShop 是基于 Laravel 开发的一款开源商城系统,主要面向外贸/跨境电商行业提供商品管理、订单管理、会员管理、支付、物流、系统管理等功能。BeikeShop商城 Beike多语言商城 多货币商城B2C商城系统 代码100%开源 PHP商城系统 H5/PC商城 跨境电商系统 跨境商城系统 电商商城系统 Laravel 9 框架插件化开发,MVC架构 支持插件市场。Event 机制实现Hook功能,自定义可视化装修。

818

linux运维命令:ldd详解 (列出程序依赖的共享库的命令 ldd的使用和原理介绍)

ldd是Linux和unix系统中的一个命令行工具,用于列出可执行文件或共享库所依赖的共享库。当你运行一个程序时,Linux 动态链接器会负责加载程序所需的一个或多个共享库(例如libc.so.6libm.so.6等)。ldd命令可以帮助我们识别这些依赖项,提供了查看动态链接信息的方法。ldd 命令对于确保程序能够找到和链接到正确的共享库版本非常有用,特别是在软件迁移或调试时。本文还介绍了ldd的工作原理.

weixin_70208651的博客 8803

WinCC动态选择报警记录案例

本例中需要确认查询的时间段以及查询的关键字,然后通过一个按钮来执行报警数据查询脚本,并把查询出的结果加载到当前报警控件中。<本例中数据查询脚本的思路是根据选项组所选定的参数加载相应的归档变量到在线趋势控件,根据设定的查询时间范围设定控件时间轴的开始时间及结束时间。本文以 WinCC V8.0为例,介绍如何动态的查询WinCC报警记录,包括关键字查询/时间&关键字查询,如图1所示。<在WinCC变量管理中创建不同的变量组,并在变量组下创建相应的变量,如图2 所示(下图并非实际变量值)。

weixin_45072604的博客 2708

火星遥感数据的获取与处理工具安装详解

有关火星遥感影像数据的那些事...

FengYingLuo的博客 5572

Linux命令之ldd命令

LDD用来打印或者查看程序运行所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题。ldd不是一个可执行程序,而只是一个shell脚本。

yygr的博客 2177

线性代数知识点整理

线性代数基础知识点摘要整理

cuguanren的博客 3万+

x64 编译 静态链接_理解 Linux 动态链接库依赖

背景如果我在 CentOS 7 上 安装了一个 Python 3,我是否能把它复制到 CentOS 6 上运行呢?短答案:可以。但是这牵扯到如何处理所有 Python 3 依赖的问题。动态链接 vs 静态链接绝大部分程序都或多或少共享了一些相同的功能,比如读写文件、创建HTTP连接等。这些相同的功能无需在每个程序中包含,只需大家共享一份相同的即可。使用这种共享技术的,就是动态链接;相反不使用这种共...

weixin_39911916的博客 345

实战交易策略 篇二十二:情绪流龙头交易策略

在股票市场中,机构主导趋势,游资驱动热点,散户易被情绪裹挟,形成“金字塔”式生态链,并存在情绪传递、强者恒强、物极必反的规律特点。股市是资金驱动的情绪博弈场,价格波动由群体心理、资金博弈和预期差共同驱动,核心是资本逐利性与人性贪婪恐惧的交织,兼具资源配置、财富再分配与风险定价功能。涨停加速与逃逸缺口(主升强化)凹字板/平台突破(趋势延续)天量弱转强(分歧买点)不参与首波(二波策略)情绪周期(道术合一)主线思维(聚焦核心)开盘抢筹(竞价博弈)一字助攻(情绪强化)分批进出(滚动操作)

生活在别处 1487

解答网友疑问:聊聊 SAP MRP 中追溯需求的技术实现

笔者到 SE37 里一查,果然有这个 Function Module,并且在里面设置断点之后,执行事务码 MD09 之后,设置在该 Function Module 内的断点也触发了,看来 ChatGPT 比较靠谱。因为红色区域的显示,是通过用户在 MD09 的 ALV 界面上双击触发的,因此我们直奔用户输入模块,PROCESS AFTER INPUT,在 check_fcode 的实现体内设置断点。通过这种追溯,企业可以了解需求和供应之间的关系,从而优化生产和采购计划,减少库存积压,提升供应链效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1026

当Linux基础命令集体罢工:一次glibc版本冲突引发的灾难恢复实录

本文记录了Linux系统中因glibc版本冲突导致基础命令集体失效的灾难恢复过程。通过分析libc.so.6等关键库文件问题,详细介绍了如何利用sln工具修复软链接、保持SSH连接存活,并提供了glibc管理的最佳实践,帮助系统管理员有效应对类似危机。

rl6adventurer的博客 797

【Py/Java/C++/C/JS/Go六种语言OD独家2024E卷真题】20天拿下华为OD笔试之【固定滑窗】2024E-考勤信息【欧弟算法】全网注释最详细分类最全的华为OD真题题解

可上练习华子OD、大厂真题绿色聊天软件戳oj1441了解算法冲刺训练(备注【优快云】否则不通过)

weixin_48157259的博客 618

Linux之libc.so.6软链接错误导致ls等基础命令无法使用

在yum安装了lm_sensors模块后,出现服务器ls,grep,find等全部命令无法使用的情况。其原因是安装lm_sensors的时候需要安装依赖lm_sensors-libs动态库,安装完成动态库后会更新动态库的软链接,而/usr/lib64目录下存在升级遗留的glibc2.25相关动态库文件,默认软链接到最新版本,而当前最新版本未正确安装,并不能使用。经过重建libc.so.6等文件的软链接完成了回退。处理ls、grep等基础命令无法使用的情况,请注意:保持当前ssh连接不断开,不要重启服务器!.

月生的静心苑 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Linux:ldd命令详解

ldd 用于打印程序或者库文件所依赖的共享库列表。 语法 ldd(选项)(参数) 选项 --version:打印指令版本号; -v:详细信息模式,打印所有相关信息; -u:打印未使用的直接依赖; -d:执行重定位和报告任何丢失的对象; -r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数; --help:...

aji1978的博客 642

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux:Ldd命令介绍及使用方法

1、首先ldd不是一个可执行程序,而只是一个shell脚本   2、ldd能够显示可执行模块的dependency,其原理是通过设置一系列的环境变量,如下:LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、LD_VERBOSE等。当LD_TRACE_LOADED_OBJECTS环境变量不为空时,任何可执行程序在运行时,它

游牧的博客 806

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

每天学一个 Linux 命令(114):ldd

点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!命令简介ldd 命令打印程序和库的共享库依赖项。注意:ldd 不是一个可执行程序,而只是一个 Shell...

民工哥的博客 983

linux下的ldd

linux下的ldd

sdfshfh的博客 237

Linux中的ldd命令和pvs命令

Linux中的ldd命令和pvs命令 2012-06-05 12:52:13 分类: LINUX ldd命令用于判断某个可执行的 binary 档案含有什么动态函式库。 参数说明: --version  打印ldd的版本号 -v --verbose  打印所有信息,例如包括符号的版本信息 -d --data-relocs  执行符号重部署,并报告缺少的目标对象(只对ELF格式

xu_ya_fei的专栏 1930

Linux 动态库加载失败排查:ldd 命令 3 步定位与 4 种修复方案实测

本文详细解析了Linux动态库加载失败的常见问题,通过ldd命令三步定位错误,并提供了四种有效的修复方案,包括LD_LIBRARY_PATH环境变量法、ldconfig系统缓存法、编译时rpath硬编码和标准目录部署法,帮助开发者快速解决cannot open shared object file等动态库加载问题。

chuoshao2508的博客 334

Centos7.6系统 常见版本查询

glibc版本查看 方法一: [root@centos706 appStore]#rpm -qa | grep glibc glibc-common-2.17-260.el7_6.4.x86_64 glibc-devel-2.17-260.el7_6.4.x86_64 glibc-2.17-260.el7_6.4.x86_64 glibc-headers-2.17-260.el7_6.4.x86_64 方法二: [root@centos706 appStore]#ldd --version ldd (G..

FEI441544558的专栏 2855

6 linux 制作raw命令_6个你可能不熟悉的Linux实用命令!

来源:网络Linux是一个强大的操作系统,这篇文章收集了6个你可能没有用过的Linux命令,但却相当的有用,供大家参考。1)bc这个Linux命令用于精度比较高的数学运算。如:开平方根等。下面利用bc命令写个脚本(文件名:sqrt)#!/bin/bash if [ $ then echo 'Usage: sqrt number' exit 1 else echo -e "s...

weixin_36435766的博客 209

linux命令之ldd

今天在centos中安装64位的PXC时,一直报错。最后用ldd命令查看显示"not a dynamic executable"。问题搞了半天。 最后才发现PXC是64的,而我的centos系统是32位的。。 ldd    用于判断某个可执行的 binary 里含有什么动态函式库。 最后说一下如何查看当前系统是多少位的,我常用的就一下3种方法: 1.getconf LO

chenlvzhou的专栏 710

linux 命令之ldd

ldd命令是用来查看程序运行时所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题ldd使用方式: ldd [option] file option: –version : 打印ldd的版本号 -v –verbose: 打印所有信息 -d –data-relocs:执行符号重部署,并报告缺少的目标对象(只对ELF格式适用) -r –function-relocs:对目标对象和

Gino的专栏 1048
上一篇: Linux(Centos 7.6)命令详解:which
下一篇: Linux(Centos 7.6)命令详解:find
豆是浪个
博客等级 码龄2年 2564粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆是浪个

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值