首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Mac OS X上构建Linux内核

在Mac OS X上构建Linux内核
EN

Stack Overflow用户
提问于 2012-04-05 04:29:17
回答 3查看 40K关注 0票数 25

我正在做一个修改Linux内核的项目。我有一台桌面Linux机器,在上面构建内核没有任何问题。

然而,我要去旅行了,我想在路上工作。我只有一个MacBook。当我试图构建Linux内核时,它抱怨elf.h was not found

我从网上下载了一个elf.h。现在它抱怨:NO ELF

我尝试从我的Linux桌面复制整个包含目录,并将其设置为/usr/include目录,但仍然收到像"u8" not declared这样的奇怪错误

在Mac上进行内核开发的标准方法是什么?我在同一台Mac上有一个运行Linux的虚拟机,它将用于测试修改后的内核。然而,我并不是真的想在它上面构建内核,因为它有点慢。

EN

回答 3

Stack Overflow用户

发布于 2012-04-05 05:00:22

这是一个常见的问题(嗯,通常它是在Windows上构建的,但答案是相同的)。

不要这样做。你将会遇到很多麻烦来正确构建任何东西,这是不值得的。使用虚拟机,正如您自己所说的那样。它有点慢,但不是很多,至少构建可以正常工作。

如果不引入额外的、不必要的问题,内核开发就够难的了。

票数 8
EN

Stack Overflow用户

发布于 2016-08-04 01:24:05

这是Android 6.0棉花糖和OSX 10.10 Yosemite的更新。我已经使用这种方法成功地完成了几次交叉构建。唯一的限制是,我只能在签出完整的AOSP源代码的情况下执行这些操作。

我使用brew的libelf获得了一个很好的包托管精灵库。这将使我们获得需要包含的elf文件usr/local/opt/libelf/include/libelf/gelf.h

代码语言:javascript
复制
brew install libelf

但是,如果您将其符号链接到usr/local/include,这仍然会在构建时抛出错误,因为显然缺少一些定义。因此,我从<kernel_source>/arch/arm/include/asm/elf.h中窃取了缺少的定义,并创建了一个填充包含文件:

代码语言:javascript
复制
cat <<EOT >> /usr/local/include/elf.h
#include "../opt/libelf/include/libelf/gelf.h"
#define R_386_NONE 0
#define R_386_32 1
#define R_386_PC32 2
#define R_ARM_NONE 0
#define R_ARM_PC24 1
#define R_ARM_ABS32 2
#define R_MIPS_NONE 0
#define R_MIPS_16 1
#define R_MIPS_32 2
#define R_MIPS_REL32 3
#define R_MIPS_26 4
#define R_MIPS_HI16 5
#define R_MIPS_LO16 6
#define R_IA64_IMM64 0x23 /* symbol + addend, mov imm64 */
#define R_PPC_ADDR32 1 /* 32bit absolute address */
#define R_PPC64_ADDR64 38 /* doubleword64 S + A */
#define R_SH_DIR32 1
#define R_SPARC_64 32 /* Direct 64 bit */
#define R_X86_64_64 1 /* Direct 64 bit */
#define R_390_32 4 /* Direct 32 bit. */
#define R_390_64 22 /* Direct 64 bit. */
#define R_MIPS_64 18
EOT

这应该足以完成构建。如果有人需要更多关于这方面的信息,我有一个post,它涵盖了在OSX上构建的完整的Android内核。

票数 4
EN

Stack Overflow用户

发布于 2013-11-08 12:11:21

从kitkat开始工作(没有尝试早期版本)- make -j8 ARCH=arm CROSS_COMPILE=arm-eabi- HOSTCFLAGS="-I ../external/elfutils/libelf"

这里假设android构建的其余部分都是照常设置的,并且内核目录在android构建中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10018764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档