ubuntu - 如何构建旧版本的 glibc?
问题描述
我正在为 Ubuntu Xenial 16.04 为 arm 构建 gcc-8.1.0 交叉编译器。该软件包作为 debian 软件包存在,但仅适用于 Ubuntu 18.04 仿生,这就是我构建它的原因。但是有一个问题 - 即 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 制作标准 C 时由于错误,库 glibc 无法构建/tmp/ccs9D1VT.s: Error: `loc1@GLIBC_2.17' can't be versioned to common symbol 'loc1'
。根据链接中给出的手册,我在前面的步骤中尝试了旧版本的 gcc(4.9.3 和 5.4.0),但似乎 glibc 有这个错误。
所以,我想知道 - 如果这是 glibc-2.23 中的错误,它是如何构建的?因为我已经为 x86_64 Ubuntu Xenial 安装了我的 debian 软件包。
解决方案
您需要反向移植此上游提交:
commit 388b4f1a02f3a801965028bbfcd48d905638b797 Author: H.J. Lu <hjl.tools@gmail.com> Date: Fri Jun 23 14:38:46 2017 -0700
避免在常用符号上使用 .symver [BZ #21666]
公共符号上的 .symver 指令只是创建一个新的公共符号,而不是别名和带有错误修复的更新的汇编程序
https://sourceware.org/bugzilla/show_bug.cgi?id=21661
会发出错误。在修复之前,我们得到了 […]
此提交已包含在release/2.23/master
分支中,因此您可以这样做。
推荐阅读
- r - 如何重复列表可变次数
- wordpress - 使用帖子计数的帖子的可变宽度
- hibernate - Hibernate - 在单个事务中保存两个对象
- android - 以目标账户的货币设置所有应用内商品的默认价格
- keystore - 如何在 keytool 中传递一些非 ASCII 字符
- google-apps-script - 使用谷歌应用脚本进行数据操作
- python - 如何运行 g:profiler
- java - 使用 SimpleDateFormat Android 无法解析的日期
- android - Maps v3.0.0 Beta 的 Proguard 规则
- swift - 如何过滤我的表格视图的内容?