使用Buildroot 2019.05构建glibc交叉编译器

时间:2019-06-21 00:17:22

标签: linux glibc buildroot

我想以二进制格式分发我的应用程序。但是,当我在Fedora 30(具有glibc-2.29)上编译时,我的二进制文件和所需的依赖项对glibc-2.29中的符号有多个引用。似乎有太多东西无法有效地(并且深深地存在于系统依赖性中)使用如下内容:

__asm__(".symver logf,logf@GLIBC_2.2.5");

因此,我一直在尝试构建一个glibc交叉编译器。由于我需要编译大量依赖项(Xorg,OpenGL等),因此我认为使用Buildroot会更容易。不幸的是,Buildroot 2019.05似乎会自动使用glibc-2.29,并且make menuconfig中似乎没有选项可以更改此设置。

是否有一种方法可以强制Buildroot使用glibc-2.24?我非常希望不必在跟踪较旧glibc的发行版上进行编译。

2 个答案:

答案 0 :(得分:0)

我认为您可以尝试使用较旧的buildroot版本。但是我不确定哪个使用glibc-2.24。

答案 1 :(得分:0)

解决方案1:

使用最初用于生成应用程序必须在其中运行的根文件系统(或分发)的工具链。

这样,您将拥有相同的glibc版本所有其他库的相同版本。

解决方案2:

静态构建应用程序。但是您必须检查客户端/服务器组件(例如Xorg)是否可以与不同于客户端版本的服务器版本一起使用。

其他解决方案:

如果无法实现,则可能要尝试以下操作之一:

  • 使用Buildroot 2017.08。 Glibc在2017.11达到了2.26。
  • 使用Crosstool-NG构建工具链,该工具链支持许多glibc版本, 然后在Buildroot中将其用作外部工具链并构建所有库 您需要。

但是,它们可能会带来更多无法解决的问题,因为您仍然需要找到一个Buildroot版本,该版本的所有库都应与目标兼容。