在源初始ram文件系统上从源安装包

时间:2011-11-10 19:45:50

标签: linux makefile init

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

编译的程序是否还需要在initramfs上安装C库?

我是否正确地认为当从源代码编译程序时,它被编译成某种可执行文件? initramfs上的应用程序是否准备好运行make install ed(使用正确的前缀并提供依赖关系)?

1 个答案:

答案 0 :(得分:1)

编译的程序是否需要C库 - 或者任何类型的库 - 取决于它是如何linked

通常,如果您的程序已链接statically,那么它没有任何外部依赖项 - 它只需要一个可用的内核。它所依赖的任何库的可执行代码都已合并到最终的可执行文件中。

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

还可以将可执行文件静态链接到某些库并与其他库动态链接。发生这种情况的常见情况是稀有链接或专有库静态链接,而标准系统库是动态链接的。