当前位置: 首页 > news >正文

做网站要学会什么软件电商网站

做网站要学会什么软件,电商网站,加强教育信息网站建设,哪家网站建设公司好一文讲清ldd命令及使用场景 前言下面进入正题:ldd命令 前言 博主今天ubuntu编译go项目出来的一个可执行文件,放centos运行发现居然依赖于XXlib库。然后我一下就想到两个系统库版本不一致,重编。换系统,导项目,配环境……

一文讲清ldd命令及使用场景

    • 前言
    • 下面进入正题:ldd命令

前言

博主今天ubuntu编译go项目出来的一个可执行文件,放centos运行发现居然依赖于XXlib库。然后我一下就想到两个系统库版本不一致,重编。换系统,导项目,配环境……

等等,编出来的文件为啥还需要lib库??

然后使用ldd命令查看,显示除了依赖的共享库文件。但是为啥会依赖呢?一会儿我们会主要介绍ldd命令的功能。
在这里插入图片描述

比较正常编译出来的go程序的设置 go env 发现不同的只有CGO_ENABLED=0 CGO_ENABLED=1 两个参数区别,这里博主去查看了一下这个环境变量的用处。

CGO_ENABLED=0 是一个环境变量,用于控制 Go 语言程序是否使用 CGO(C 与 Go 之间的接口)。当 CGO_ENABLED 设置为 0 时,Go 程序将不会尝试链接任何 C 代码或库。这通常用于确保 Go 程序可以在没有 C 编译器的环境中编译和运行,例如在纯 Go 容器中。

最后使用CGO_ENABLED=0 go build重新编译即可。如下图所示即为不依赖于库的可执行文件。

在这里插入图片描述

下面进入正题:ldd命令

ldd命令是Linux系统中的一个工具,用于打印出一个可执行文件所依赖的共享库文件(动态链接库)

在Linux操作系统中,程序运行时往往依赖于多个动态链接库(Dynamic Link Libraries,简称DLLs或.so文件)。这些库文件提供了程序运行所需的函数和数据结构。为了了解一个程序依赖哪些库文件以及库的版本,通常可以使用ldd命令来实现这一目的[2]。它不仅能够列出程序运行时需要加载的共享库文件及其路径,还能帮助调试程序、解决运行时错误以及优化系统环境[3]。

首先,ldd命令的基本语法如下:

ldd [选项] 可执行文件或共享库文件

其中,常用选项包括:

  • -v--verbose:显示详细信息模式,打印所有相关信息[4]。
  • -u--unused:显示未使用的直接依赖项[1]。
  • -d--data-relocs:显示包含数据重定位的共享库[3]。
  • -r--function-relocs:显示包含函数重定位的共享库[3]。

例如,查看某个可执行文件(如ls命令)所需的动态库,可以使用以下命令[1][4]:

ldd $(which ls)

此命令将输出类似以下的结果:

linux-vdso.so.1 =>  (0x00007ffd3a7b3000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5d5e18b000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f5d5e161000)
...

这表明ls命令依赖于libpthread.so.0libselinux.so.1等共享库文件,每个依赖项的路径都会显示在箭头(=>)之后。

其次,ldd命令的工作原理是通过设置一系列的环境变量,如LD_TRACE_LOADED_OBJECTSLD_WARNLD_BIND_NOWLD_LIBRARY_VERSIONLD_VERBOSE等。当LD_TRACE_LOADED_OBJECTS环境变量不为空时,任何可执行程序在运行时,它都会只显示模块的依赖关系,而程序并不真正执行[1][3]。实际上,ldd命令的本质是通过执行/lib/ld-linux.so.*来实现的[1]。

在使用ldd命令时,还可以结合其他参数来获取更多信息。例如,使用-v参数可以打印所有相关信息,包括符号的版本信息;使用-u参数则可以打印未使用的直接依赖项[4]。这对于深入理解程序的运行机制非常有帮助。

最后,值得注意的是,ldd命令只能用于分析动态链接的程序和库文件,如果程序或库文件是静态链接的,则无法列出其依赖的库文件[2]。此外,由于ldd需要读取可执行文件或共享库文件的符号表信息,因此可能需要足够的权限来执行该命令,遇到权限问题时可以尝试使用sudo命令提升权限[2]。

综上所述,ldd命令是一个强大的工具,能够帮助人们了解程序依赖的动态链接库文件及其路径,从而更好地调试程序、优化系统环境以及理解程序运行机制。在使用ldd命令时需要注意权限问题、静态链接与动态链接的区别以及库文件路径的解析方式。

http://www.yayakq.cn/news/185624/

相关文章:

  • 做网站用哪几个端口 比较好企业查询网站有哪些
  • 网站和网店的区别网站常用素材
  • 超大网站制作素材常州做网站哪家好
  • 深圳网站设计成功刻网站建设属于高新技术收入吗
  • 安顺市建设局网站郑州发布紧急通告
  • 电商平台网站大全网站怎么做
  • wordpress user密码比优化更好的词是
  • 海南网站建设推广公司哪家好八年级信息所用软件做网站
  • 初学网站开发书籍电子商务网站建设与运营方向
  • 凡网站建设seo优化关键词排名优化
  • 青岛网站建设铭盛信息内容营销的重要性
  • eclipse tomcat 网站开发怎样建立一个营销的公司网站
  • 贵阳查房子备案的网站蘑菇丁毕业设计网站
  • asp.net企业网站模板潍坊网站建设案例
  • 哪家公司做网站专业只需要手机号的广告
  • 网站建设与管理实训个人做网站花多少钱
  • 网站分享到微信缩略图photoshop画简单网站
  • 做网页网站建设工程施工合同2017
  • 网站实现功能做网上贸易哪个网站好
  • 旅游网站设计的目的写文的免费软件
  • 如何查找网站根目录电商网站平台有哪些功能模块
  • 百度极速版下载安装洛阳网站建设seo
  • 河南中恒诚信建设有限公司网站泰安网站建设公司排名
  • 做乒乓球网站的图片大全自己什么建设网站
  • 51的网站是啥网站开发的程序平台
  • 做编程的 网站有哪些做彩票网站推广犯法吗
  • 什么网站都能打开的浏览器网络推广公司怎么运作
  • 超链接网站图片怎么在记事本上做搜索引擎网站分析
  • 有商家免费建商城的网站吗wordpress 动画
  • 网站空间购买价格万户 网站建设