![为什么“ldd /usr/bin/firefox”不列出库文件?](https://linux22.com/image/111887/%E4%B8%BA%E4%BB%80%E4%B9%88%E2%80%9Cldd%20%2Fusr%2Fbin%2Ffirefox%E2%80%9D%E4%B8%8D%E5%88%97%E5%87%BA%E5%BA%93%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在遵循有关如何查找程序的依赖库的教程,其解释如下:
whereis firefox
显示安装它的文件夹,获取二进制文件的完整路径,以及ldd /usr/bin/firefox
将其作为 ldd 命令的参数。
本教程还使用 Firefox 作为示例,因此我确定要重新创建它,但是当我输入:
答案1
可执行文件firefox
是系统上的 shell 脚本。
一些应用程序使用包装脚本来设置应用程序的执行环境,可能是为了更好地与当前的 Unix 风格集成,或者提供运行应用程序的替代方法(新的命令行选项集等)。应用程序本身不提供。有时,包装器脚本用于根据调用脚本的方式选择正确的实际二进制文件来运行。
例如,MPI(“消息传递接口”)C 编译器只不过是一个包装脚本cc
(或它设置使用的任何编译器),确保 MPI 标头位于搜索路径中并且链接 MPI 库在编译的时候。
看一下这个脚本,看看它在什么情况下调用什么二进制文件。
答案2
$ file $(which firefox)
/usr/bin/firefox: Bourne-Again shell script, ASCII text executable
$ tail $(which firefox)
done
# Run the browser
debugging=0
if [ $debugging = 1 ]
then
echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
fi
exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"