首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查看内置在linux命令中的源代码?

问如何查看内置在linux命令中的源代码?
EN

Unix & Linux用户
提问于 2022-04-30 20:23:13
回答 3查看 1.9K关注 0票数 1

据我所知,当我运行像ping、grep或ls这样的命令时,Linux操作系统会在目录/bin中搜索这些命令名;我也知道大多数Linux命令都是用C编写的。

我只是想看看ping或ls是如何用实际C编写的,但是当我用cat /bin/ping编写一个文件时,它会释放垃圾数据,因为它是二进制格式的。

那么,有什么方法可以查看用C编写的命令吗?

EN

回答 3

Unix & Linux用户

发布于 2022-04-30 20:51:19

它有助于知道哪个包提供命令。例如,在许多(但不是所有!)Linux发行版,ls命令由GNU coreutils包提供。您可以通过以下来自核心网页的链接找到这些命令的源。

ping命令由iputils包提供;您可以找到souces 这里。

大多数发行版提供了一种机制来确定包拥有什么文件。例如,在Ubuntu上,我们可以使用dpkg-query,如下所示:

代码语言:javascript
复制
$ dpkg-query -S /bin/ls
coreutils: /bin/ls

Red /Fedora/CentOS/etc的相应命令是:

代码语言:javascript
复制
$ rpm -qf /bin/ls
coreutils-8.32-33.fc35.x86_64

如果您知道提供您感兴趣的文件的包,则通常可以通过查找发行版提供的相应源包来查找源。对于Ubuntu,您可以转到https://packages.ubuntu.com/并按名称查找包;如果您搜索iputils,您将得到这里,您将找到下载用于构建该包的源代码的链接。

对于Fedora包,您可以转到https://packages.fedoraproject.org/并搜索包。在这种情况下,您需要读取spec文件(例如,这个给iputils)来确定在哪里查找源。

如果您使用的是Ubuntu或Fedora以外的其他东西,可能会有类似的机制可用。大多数发行版还提供命令行工具,用于按名称下载源包。

票数 1
EN

Unix & Linux用户

发布于 2022-04-30 20:49:04

当您说cat /bin/ping时,您试图查看从C源代码编译的命令的二进制代码。您应该查找命令的C源代码。有关更多信息,请参考如何读取外壳命令的源代码?。

票数 0
EN

Unix & Linux用户

发布于 2022-05-01 06:23:21

在linux中有一些分析二进制命令的方法,包括:

  1. 文件,确定文件类型。
  2. 打印共享对象依赖项。
  3. 一个图书馆的电话追踪器。
  4. 六转储,以ASCII、十进制、十六进制或八进制显示文件内容。
  5. 字符串,在文件中打印可打印字符的字符串。
  6. 显示有关ELF文件的信息。
  7. objdump,显示对象文件中的信息。
  8. 跟踪系统呼叫和信号。
  9. nm,从对象文件中列出符号。
  10. gdb,GNU调试器。
票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/700984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档