我想以二进制格式分发我的应用程序。但是,当我在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的发行版上进行编译。
答案 0 :(得分:0)
我认为您可以尝试使用较旧的buildroot版本。但是我不确定哪个使用glibc-2.24。
答案 1 :(得分:0)
解决方案1:
使用最初用于生成应用程序必须在其中运行的根文件系统(或分发)的工具链。
这样,您将拥有相同的glibc版本和所有其他库的相同版本。
解决方案2:
静态构建应用程序。但是您必须检查客户端/服务器组件(例如Xorg)是否可以与不同于客户端版本的服务器版本一起使用。
其他解决方案:
如果无法实现,则可能要尝试以下操作之一:
但是,它们可能会带来更多无法解决的问题,因为您仍然需要找到一个Buildroot版本,该版本的所有库都应与目标兼容。