为什么“ldd /usr/bin/firefox”不列出库文件?

sha*_*ant 2 command-line firefox shared-library

我正在学习如何找出程序的依赖库的教程,它的解释如下:

  1. whereis firefox 显示安装它的文件夹,获取二进制文件的完整路径,以及
  2. ldd /usr/bin/firefox 把它作为 ldd 命令的参数。

该教程还以 firefox 为例,因此我肯定会重新创建它,但是当我输入:

 whereis firefox
firefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz
 ldd /usr/bin/firefox
    not a dynamic executable
Run Code Online (Sandbox Code Playgroud)

我收到了“不是动态可执行文件”的消息,而不是库列表。为什么?

Kus*_*nda 5

firefox可执行文件是系统上的shell脚本。

一些应用程序使用一个包装器脚本来设置应用程序的执行环境,可能是为了更好地与当前的 Unix 风格集成,或者提供运行应用程序的替代方法(新的命令行选项集等)应用程序本身不提供。有时,包装脚本用于根据调用脚本的方式选择要运行的正确实际二进制文件。

例如,MPI(“消息传递接口”)C 编译器只不过是一个包装脚本cc(或它设置使用的任何编译器),可确保 MPI 标头位于搜索路径中并且 MPI 库已链接在编译的时候。

看看这个脚本,看看它在什么情况下调用了什么二进制文件。

  • @sharkant 它与`bash` 的`.bashrc` 不太相似。这更像是您围绕 `ls` 编写了一个脚本,该脚本设置了正确的语言环境环境变量,然后调用了 `ls`,可能带有额外的标志。 (2认同)