Alf*_*ong 23 linux macos kernel elf
我正在做一个修改Linux内核的项目.我有一个桌面Linux机器,我没有问题在它上面构建内核.
但是,我要去旅行,我想继续前进.我只有一台MacBook.当我试图构建Linux内核时,它抱怨说elf.h was not found.
我从互联网上下载了一个elf.h.现在它抱怨:NO ELF
我尝试/usr/include从Linux桌面复制整个,并将其设置为include目录,但仍然会出现奇怪的错误"u8" not declared
在Mac上进行内核开发的标准方法是什么?我有一台在同一台Mac上运行Linux的虚拟机,它将用于测试修改后的内核.但是,我真的不想在它上面构建内核,因为它有点慢.
mpo*_*llo 20
首先,我同意使用Linux VM通常更简单.也就是说,如果你真的想这样做,我已经使用下面的程序成功编译了Linux内核代码.
在开始之前,您可能需要在Mac上的区分大小写的文件系统上安装Linux源代码树.(默认的HFS文件系统不区分大小写.)我不会在这里讨论,但很多人这样做是为了编译Android源代码树,因此您可以使用Google查找说明.
首先,您需要以下文件来交叉编译OS X盒上的内核(将它们从已知的Linux VM复制到您的本地/usr/include):
/usr/include/elf.h
/usr/include/features.h
/usr/include/bits/predefs.h
/usr/include/bits/wordsize.h
/usr/include/gnu/stubs.h
/usr/include/gnu/stubs-64.h
Run Code Online (Sandbox Code Playgroud)
接下来,您需要malloc.h位于Linux系统的预期位置,所以:
sudo ln -s /usr/include/malloc/malloc.h /usr/include/malloc.h
Run Code Online (Sandbox Code Playgroud)
最后,您需要担心系统上安装的编译器是否适合构建Linux内核.我已经使用这个程序为Android编译的内核,使用适当的交叉编译工具链,但我不确定你是否能用gccOS X上的默认编译器成功编译Linux内核(假设你有Xcode附带的那个) ...)
编辑:你可能还想按照上面评论中链接的错误指出"nmagerko",以确保你有正确的依赖关系,以及GNU版本的sed.特别是:
$ sudo port install libelf
$ sudo port install gsed
Run Code Online (Sandbox Code Playgroud)
这是一个常见的问题(嗯,通常是在Windows上构建的,但是答案是相同的)。
只是不要这样做。要正确构建任何东西,您将遇到很多麻烦,这是不值得的。就像您自己说的那样使用虚拟机。速度稍慢一些,但不是全部,而且至少建筑物可以正常工作。
内核开发足够困难,而不会引入其他不必要的问题。