x86_64-linux-gnu 在线编译,Linux x86 编译 Android 遭遇 gnu/stubs-64.h
编译Android源码时,gcc将中定义了__x86_64__,编译不过,错误如下。我的PC是32位的,应该如何设置?
这两天心血来潮,执行完 repo sync 后,顺手来了一下 make,不料却发现了以下的错误:
host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_util.c
In file included from /usr/include/features.h:378,
from /usr/include/string.h:26,
from external/clearsilver/java-jni/j_neo_util.c:1:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: No such file or directory
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o] Error 1
兵来将挡,水来土掩,用关键字 android “error: gnu/stubs-64.h: no such file or directory” 来搜一下吧,发现搜索结果寥寥无几,看样子问题比较新,其中有一个链接,就顺手点了过去。帖子反映的问题和我一模一样,不过它的分析给了我一些提醒。
从错误信息入手,追踪到/usr/include/gnu/stubs.h,看到如下代码:
#if__WORDSIZE == 32
# include
#elif __WORDSIZE == 64
# include
#else
# error"unexpected value for __WORDSIZE macro"
#endif#if __WORDSIZE == 32
# include
#elif __WORDSIZE == 64
# include
#else
# error "unexpected value for __WORDSIZE macro"
#endif
顺着 WORDSIZE,进入/usr/include/bits/wordsize,发现:
#ifdefined __x86_64__
# define __WORDSIZE 64
# define __WORDSIZE_COMPAT32 1
#else
# define __WORDSIZE 32
#endif#if defined __x86_64__
# define __WORDSIZE64
# define __WORDSIZE_COMPAT321
#else
# define __WORDSIZE32
#endif
结合报错的信息,可以知道这里一定是有定义__x86_64__,执行一下 uname -a 可以确认 OS 明明是x86,为什么会__x86_64__呢?追根溯源, Android 源码或许能露出蛛丝马迹。
果不其然,从 android.git.kernel.org 的 platform/external/clearsilver.git 上,看到5天前,有个 Ying Wang 的家伙提交一个修改:Fix 64-bit clearsilver shared library issue,参看这里,修改内容中 java-jni/Android.mk,和出现本次问题的路径 java-jni/j_neo_util.c,同属一个父目录,看样子有点关系,查看 Android.mk 的修改内容,发现做了如下修改:
+# This forces a 64-bit build for Java6
+ifneq ($(filter 1.6%,$(java_version)),)
+ LOCAL_CFLAGS += -m64
+ LOCAL_LDFLAGS += -m64
+endif
当发现你使用Java6时,它将强制使用64-bit,我想这就能解释__x86_64__出现的原因。那么既然它要64-bit,我就满足它。首先要解决 gnu/stubs-64.h: No such file or directory,解决这个问题需要执行以下命令:
[www.linuxidc.com@linuxidc]$ apt-get install libc6-dev-amd64
完成以后再执行 make,发现有错误:
/usr/bin/ld: cannot find -lstdc++
那就继续满足它:
[www.linuxidc.com@linuxidc]$ apt-get install g++-multilib lib64stdc++6
还是不行,又发生下面的错误:
/usr/bin/ld: cannot find -lz
再来执行命令:
[www.linuxidc.com@linuxidc]$ apt-get install lib64z1-dev
x86_64-linux-gnu 在线编译,Linux x86 编译 Android 遭遇 gnu/stubs-64.h相关推荐
- openwrt+linux编译,openwrt x86 编译部署
0.背景 前段时间看到C1037u多网口版本,很是喜欢,替换的4530r,发现玩openwrt x86的人比较少,写一篇日记,以备后用,有错误之处请指出. 1.配置编译环境 Linux 2.获取源代码 ...
- linux crontab在线生成,linux下crontab在线配置解析 互联网技术圈 互联网技术圈
linux下,有时,您可能需要定期执行任务或以预定的时间间隔执行任务.这些任务包括备份数据库,更新系统,执行定期重新引导等.这些任务通常都是使用crontab执行的. 系统crontab文件位于/et ...
- linux 网络在线升级,linux在线升级
//======================================= 前提信息: 1.系统分区信息 SPI-Flash: [0] 0x000000000000-0x00000002000 ...
- Linux错误27,解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”...
centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装 ...
- Linux 环境编程 day01 Linux系统介绍、GNU编译工具、静态/共享库、环境变量表
Linux 环境编程 day01 Linux系统介绍.GNU编译工具.静态/动态库.环境变量表 学习Linux环境编程的原因 UNIX系统介绍 Linux系统介绍 GNU工程 POSIX标准 GNU通 ...
- linux系统软件包分类,Linux软件包管理和编译安装
软件包介绍 开源软件最初只提供了.tar.gz的打包的源码文件,用户必须自已编译每个想在GNU/Linux上运行的软件.用户急需系统能提供一种更加便利的方法来管理这些软件,当Debian诞生时,这样一 ...
- openssl 的编译(linux、Ubuntu) 和 交叉编译(arm、Hi3531A)的问题分析、解决
目录 一.编译环境及准备材料 二.Ubuntu下编译openssl 三.交叉编译 openssl 一.编译环境及准备材料 1.编译环境: 1.1.Ubuntu环境 - ubuntu 14.04.1 $ ...
- CentOS下编译Linux内核
前言 编译内核是一项很简单的事情,但却是进入Linux内核世界的第一步,想要开发内核代码,想要了解内核的运行机制,第一步就是编译Linux内核,以下是在centos7.5环境下编译内核的具体流程. 1 ...
- Linux内核开发_1_编译LInux内核
目录 1. 准备工作 1.1 学习环境 1.2 下载Linux内核源码 1.3 解压Linux内核 1.4 目录结构介绍 2. Linux内核配置 2.1 配置选项 1. make config 2. ...
- 编译Linux Kernel(linux-4.19.178)并制作成rpm文件
目录 一.安装依赖项 二.下载.解压缩.制作.config文件 三.编译内核及打包 四.升级内核 首次尝试编译Linux内核,记录过程,提供Linux Kernel(linux-4.19.178)下载 ...
最新文章
- [JDK8]性能优化之使用LongAdder替换AtomicLong
- python安装numba_python – 在OS X上安装Numba时出错
- clickhouse常用sql
- 解决IE6下CSS兼容性的两把神器
- 关于零基础学习web前端开发,有些过来经验分享
- C#仿QQ皮肤—更新DataGridView的鼠标跟随效果
- 直播:CSDN 联合腾讯安全上线公开课,分享云原生安全技术理解和应用实践
- FineUI.Grid内容换行处理
- 最佳实践:阿里云VPC、ECS支持IPv6啦!
- error:LNK2005
- 信息学竞赛 c语言 pascal,pascal信息学竞赛教程
- Java枚举类与常用方法
- 解决“npm WARN requires a peer of XXX“问题
- tensorflow-serving docker模型部署(以mnist为例)
- java得到几天前的日期
- python“~”符号的用法
- PCFG CKY句法分析
- Git 分支篇之远程分支
- 万国数据赢得GITC 年度互联网最佳服务奖
- Ubuntu 10.10下编译安装无线网卡
热门文章
- php 依赖倒置原则,PHP:依赖注入,控制反转,依赖倒置原则
- delphi关于try的正确句法结构
- 大数据杀熟行为10月1日起明令禁止,作为开发的你怎么看?
- Cell-type–specific || 单细胞文章新范式
- 数学建模 Lingo 基本算法模板
- 机器学习(十)——支持向量机
- JPA中@Enumerated注解
- 使用定时器时遇到warning: #188-D: enumerated type mixed with another type警告
- 92.91p31.space\/index.php 92.91p31.space,93.91p31.space
- 函数Str、 Cstr 、 Val 、 Format联系与区别