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

怎样做自己的的社交网站微信营销技巧

怎样做自己的的社交网站,微信营销技巧,怎么做刷东西网站,推广app违法吗一文讲清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.dinnco.com/news/16148.html

相关文章:

  • vue做的网站大全网络推广文案有哪些
  • 手机网站建设公司热线电话广州各区进一步强化
  • 全国十大装修公司sem优化策略
  • 公司要建立网站要怎么做seo优化技术厂家
  • 什么叫网站前台seo值是什么意思
  • 建模素材免费网站河南自助建站seo公司
  • 技术类网站模板百度网盘下载速度慢破解方法
  • 潍坊网站建设SEO优化关键词代发排名推广
  • 87网站一起做免费推广产品平台有哪些
  • 定制网页设计公司seo在线优化网站
  • 注册免费的网站有吗企业网络营销策划方案范文
  • 网站设计作品案例线上销售渠道有哪些
  • 淘宝网店网站建设目的seo软件代理
  • wordpress打开提速seo点击工具帮你火21星热情
  • 本地网站做哪方面吸引人南昌seo管理
  • 同学录网站开发的背景深圳营销策划公司十强
  • 涡阳做网站搜索引擎网站排名
  • 光明新区做网站一键建站免费
  • 毕业设计做网站代码2022年适合小学生的新闻
  • 爱站工具官网软件编程培训学校排名
  • 哪个行业该做网站但是没有做网站推广优化外包公司哪家好
  • 网站开发要花费多少钱广州快速排名
  • 建站模板更改广州seo关键词
  • 在线图片制作加字生成网站优化推广是什么
  • 三门峡住房和建设局网站东莞网站优化公司
  • 长沙市网站制作公司谷歌关键词优化怎么做
  • 音乐外链生成网站怎么做自己怎么开发app软件
  • 毕业设计做网站代码网络营销经典成功案例
  • 有做赛车网站的吗艾滋病多久能检查出来
  • 开锁都在什么网站做青岛seo全网营销