2011-11-10 105 views
0

我试图将多个软件包安装到初始RAM文件系统中。我使用uclibc作为我的C库。这可能是一个愚蠢的问题,但...在初始RAM文件系统上从源安装软件包

编译的程序是否还需要一个C库安装到initramfs

我的想法是,当一个程序从源代码编译,它被编译成某种可执行文件? initramfs上的应用程序是否已准备好运行,只要我有make install ed(使用正确的前缀并提供相关性)?

回答

1

编译的程序是否需要C库或任何类型的库,取决于它是什么linked

一般来说,如果你的程序连接了statically那么它没有任何外部依赖 - 它只需要一个工作内核。它所依赖的任何库的可执行代码将被合并到最终的可执行文件中。

另一方面,如果链接dynamically,那么它仍然需要它依赖的库的shared object文件。在Linux上,大多数库共享对象(也称为共享库)遵循具有.so扩展名或通常为*.so.*格式的文件名的约定。例如,/lib/libssl3.so/lib/libncurses.so.5.9都是我系统上的共享库。

也可以有一个可执行文件,它与一些库静态链接,并与其他库进行动态链接。发生这种情况的一种常见情况是罕见或专有库静态链接,而标准系统库动态链接。

+0

绝妙的答案。帮了我很多,非常感谢!最后一个问题,如果你不介意..共享对象文件机器是独立的吗?例如,如果我的实时分发在架构上与我的主机相同,那么我可以将共享目标文件复制到哪里?再次感谢 – Xleedos