如何构建旧版本的glibc?

时间:2018-07-11 07:17:20

标签: ubuntu gcc cross-compiling glibc

我正在为Ubuntu Xenial 16.04构建用于手臂的gcc-8.1.0交叉编译器。 该软件包以debian软件包的形式存在,但仅适用于Ubuntu 18.04 bionic,这就是我要构建它的原因。 但是存在一个问题-gcc-8.1.0作为用于Ubuntu 16.04(用于本机体系结构)的x86_64系统的软件包存在。它会下载所有依赖项,其中包括glibc-2.23。 当我要根据此处给出的说明为 arm 体系结构构建gcc交叉编译器时:http://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/ 在第6步中,当由于错误/tmp/ccs9D1VT.s: Error: `loc1@GLIBC_2.17' can't be versioned to common symbol 'loc1'而导致构建标准C库glibc失败时。 我在以前的步骤中根据链接中给出的手册尝试了较旧版本的gcc(4.9.3&5.4.0),但似乎glibc存在此错误。

所以,我想知道-这是否是glibc-2.23中的错误?它是如何构建的? 由于我已将其与x86_64 Ubuntu Xenial的debian软件包一起安装。

1 个答案:

答案 0 :(得分:2)

您需要向后移植此上游提交:

commit 388b4f1a02f3a801965028bbfcd48d905638b797
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Jun 23 14:38:46 2017 -0700
     

Avoid .symver on common symbols [BZ #21666]

     

关于公共符号的.symver指令只会创建一个新的公共符号,而不是一个别名,并且会修复带有错误修复程序的更新的汇编器

     

https://sourceware.org/bugzilla/show_bug.cgi?id=21661

     

将发出错误。修复之前,我们得到了

此提交为already included on the release/2.23/master branch,因此您可以做到这一点。