Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Glibc和uClibc并排在一个系统上_C_Linux_Gcc_Glibc_Uclibc - Fatal编程技术网

Glibc和uClibc并排在一个系统上

Glibc和uClibc并排在一个系统上,c,linux,gcc,glibc,uclibc,C,Linux,Gcc,Glibc,Uclibc,是否可以在一个系统上并行运行基于glibc和uClibc的应用程序 背景:我们有基于二进制gcc的交叉编译器,配置为与uClibc链接。我们与它交叉编译了glibc。现在我们想构建一些应用程序,这样它们就可以链接到glibc而不是uClibc。我们不想重建编译器。是的,这应该是完全可能的,但您可能需要使用LD\u PRELOAD\u路径。如果您是静态链接,请改为动态链接。glibc和uClibc并排运行,有些程序链接到一个,而另一些程序链接到另一个,这没有问题。但是,附加库存在一个问题。您系统上

是否可以在一个系统上并行运行基于glibcuClibc的应用程序


背景:我们有基于二进制gcc的交叉编译器,配置为与uClibc链接。我们与它交叉编译了glibc。现在我们想构建一些应用程序,这样它们就可以链接到glibc而不是uClibc。我们不想重建编译器。

是的,这应该是完全可能的,但您可能需要使用LD\u PRELOAD\u路径。如果您是静态链接,请改为动态链接。

glibc和uClibc并排运行,有些程序链接到一个,而另一些程序链接到另一个,这没有问题。但是,附加库存在一个问题。您系统上的每个共享库都将针对glibc或uClibc(使用相应的头,为标准库函数定义不同的abi)构建,因此,例如,如果glibc程序和uClibc程序都需要ncurses,则需要构建两个版本的ncurses,并有一种方法确保在运行时加载给定程序的正确程序。或者,您可以选择只使用一组共享库,并对链接到另一个libc的程序使用静态库,但您仍然需要构建两组库。

几乎不可能将它们混合在同一FHS中,因为ABI和include目录不兼容。但是,您可以通过在ELF中调整动态链接器字段并利用gcc/binutils中的sysroot特性,将其中任一项安装在目录偏移中。Gentoo社区[1]正在进行一项实验,称为Prefix/libc


  • 问题是,即使是简单的“hello world”应用程序,也是使用基于uClibc的GCC编译并与glibc segfaults链接的。为了让“hello world”正常工作,我们必须构建整个工具链。是的,我们需要构建整个工具链。