C语言 使用Visual Studio 2010构建Linux内核[已关闭]

oug3syen  于 12个月前  发布在  Linux
关注(0)|答案(8)|浏览(107)

很难说清楚这里问的是什么。这个问题模棱两可、模糊、不完整、过于宽泛或修辞,无法以目前的形式合理回答。如果需要帮助澄清这个问题,以便重新讨论,请visit the help center
十二年前就关门了。
有人有关于如何使用Visual Studio 2010构建Linux内核的分步说明吗?
我试图直接寻找这个问题的解决方案,但没有喜悦。我已经能够找到一些事情:

  1. Linux内核是使用GNU C编译器构建的,因此为了编译Linux GNU C编译器,先决条件是构建一个Windows GNU C编译器。我知道GNU C编译器源代码可以从GNU.org获得,但是否有人使用Microsoft Visual Studio 2010 C/C++编译器为Windows构建GNU C编译器?
    1.一旦Linux GNU C编译器被制作出来,我就可以用它来构建Linux内核,沿着任何其他构建Linux系统所需的基于Linux的软件。www.linuxfromscratch.org
    你们中的一些人可能想知道为什么我不简单地下载一个预编译的GNU C编译器?我工作的环境与任何外部网络完全隔离。甚至不允许使用sneaker-net。每一个软件都必须从源代码编译,这些源代码必须手工输入。这效率很低,但也非常安全。(别问,我不是老板……)
    无论如何,我们正在考虑推出内部Linux机器,但我们从Windows 7和Visual Studio 2010开始。有人能建议我们如何将所有重新键入的源代码转换为适用于Windows的GNU C编译器吗?也适用于Linux?
    谢谢你的任何建议!
plupiseo

plupiseo1#

我认为肯·汤普森的"Reflections on Trusting Trust" [archive]很好地解释了这个想法是多么的徒劳和不够偏执。
你不能信任那些不是你自己创建的代码(尤其是那些雇佣像我这样的人的公司的代码)。再多的源代码级别的验证或审查也不能保护你不使用不受信任的代码。
如果你没有自己从源代码编译GCC,你怎么知道你要用来构建GCC的编译器是安全的?你使用的编译器是什么?
你需要手工输入编译器的机器代码来引导你的100%安全的环境。只有这样,你才能信任编译后的源代码,不管你是否手工输入。

fd3cxomn

fd3cxomn2#

事实:你需要gcc来编译内核。
事实:你需要内核源代码来编译内核。
一旦你有了这两个,你就可以引导一个工作的内核,目标是你想要的任何平台。
你可以在任何你想要的平台上做这些事情。例如,你可以在Windows上构建一个Linux内核。你也可以在Windows上轻松地为ARM或PPC构建一个Linux内核。
但是你必须有内核源代码和gcc编译器才能开始。
内核源代码和gcc源代码都依赖于成千上万的头文件和.c文件,手工输入它们是不切实际的。
恕我直言

iqih9akk

iqih9akk3#

如果你要构建一个内核,使用一个Linux发行版。在Windows下构建一个内核是没有意义的。即使你要构建你自己的Linux,* 仍然**使用Linux。
你总是可以尝试cygwin,但我怀疑这会对你有多大好处,即使你安装了所有的软件包。

inkz8wg9

inkz8wg94#

Fabrice Bellards tcc能够编译Linux。它是如此之小,你可能可以用Visual C++编译它(或修改直到它工作)。你也可以尝试他的qemu来模拟计算机。
最近,他甚至用JavaScript实现了一个x86虚拟机,这样你就可以在浏览器中运行所有东西。

polhcujo

polhcujo5#

即使是sneaker-net也是不允许的。每一个软件都必须从源代码编译,这些源代码必须手工输入。这是低效的,但也是偏执的安全。
告诉你的老板,让别人手工输入源代码只会导致bug。如果他们想要Linux机器,那么他们将不得不使用Linux的源代码。你们也没有手工输入所有的Windows 7源代码,对吗?内核大约有1350万行源代码,你不可能在不引起大量与打字有关的bug的情况下把所有的源代码都打出来,这比复制源代码更不安全。
你的老板需要让他明白,即使只是输入那么多代码,即使这个人是一个100%完美的打字员,也需要

fnx2tebb

fnx2tebb6#

通过键入整个代码,你的意思是复制/重新键入 * 每一行 * 的代码?
请允许我问一下,这与原始代码有什么不同
如果你只是复制,你不是修复错误或检查可能的漏洞。是吗?我宁愿花相应的时间审查实际代码和报告或修复你意外发现的问题。

4si2a6ki

4si2a6ki7#

好吧。这几乎不可能。
如何做到这一点:
1.下载virtualbox
1.下载Ubuntu iso
1.安装Virtualbox
1.创建并安装Ubuntu虚拟机
1.虚拟机终端上:

sudo apt-get build-essential
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.2.tar.bz2
tar vxjf linux-2.6.39.2.tar.bz2
cd linux-2.6.39.2
make menuconfig ; make

字符串
或者类似的东西...

vkc1a9a2

vkc1a9a28#

假设这个问题不是一个巨魔(可能吗?).也许你正计划将源代码OCR到你的系统中,就像PGP过去如何绕过加密软件出口限制一样。
但是我不认为你会有任何运气使用MSVC构建GCC,不管有多少猴子可能会在源代码中输入。来自http://gcc.gnu.org/install/specific.html
GCC将在Cygwin下构建而无需修改;它不使用Microsoft的C++编译器构建,也没有计划这样做。
当然,如果您在给予的条件下设法将GCC安装到系统上,并且以某种方式获得了Linux内核源代码,我认为在基于Windows的GCC交叉编译器下交叉编译Linux会遇到困难。如果没有其他问题,Linux源代码树和构建环境至少会有一点依赖于Unix文件系统的大小写敏感特性(也就是说,它们依赖于fielname只能在字符的情况下不同的事实). Windows不能很好地处理文件名只在大小写上不同(我认为Windows可以以某种方式配置以支持它们,但Win32子系统几乎肯定会无可救药地混淆).
我相信还有其他障碍。

相关问题