Questions tagged «compiler»

4
如何从头开始编译C编译器,然后从头开始编译Unix / Linux
假设我在美国/英国以外的大型服务机构工作。我们广泛使用UNIX和Linux服务器。 通读本文时,提到将后门插入C编译器很容易,然后使用该编译器编译的任何代码也将包含后门。现在,鉴于最近有关NSA / GCHQ要求在所有加密方法,硬件和软件中放置后门/弱点的漏洞,编译器现在是失败的关键点。可能所有标准UNIX / Linix发行版都可能受到损害。我们无力让流氓政府破坏我们的系统,数据和客户数据。 有了这些信息,我想从头开始构建一个受信任的编译器,然后就可以建立一个安全的基础,这样我就可以使用该编译器从源代码构建操作系统和应用程序。 题 从源代码编译编译器(看似鸡蛋的场景)然后从头开始编译受信任的Unix / Linux发行版的正确(安全方式)是什么? 您可以假设我或其他人具有阅读和理解源代码的安全漏洞的能力,因此在编译之前将首先对源代码进行审查。我真正需要的是一个工作指南,可以从头开始安全地生产此编译器,并且可以用于编译内核,操作系统和应用程序的其他部分。 如果我们要对在该堆栈上运行的操作系统或应用程序有信心,则安全堆栈必须从基本级别开始。是的,我知道可能存在硬件后门,这些后门可能会在构建编译器时向编译器中插入一些微代码。目前我们对此无能为力,只能使用非美国设计的芯片。让我们首先对这一层进行排序,并假设我可以在插入任何后门之前将其构建在旧计算机上。 正如布鲁斯·施耐尔(Bruce Schneier)所说:“我向工程师说:我们建立了互联网,我们中的一些人已经颠覆了互联网。现在,那些热爱自由的人必须加以修复。” 额外链接: http://nytimes.com/2013/09/06/us/nsa-foils-much-internet-encryption.html?pagewanted=all&_r=0 http://theguardian.com/commentisfree/2013/sep/05/government-betrayed-internet-nsa-spying


2
为什么我不能运行这个C程序?
我正在尝试运行我的第一个“过程”程序,但出现以下错误: ./fork.c: line 4: syntax error near unexpected token `(' ./fork.c: line 4: `int main()' 我很确定代码是正确的: #include <sys/types.h> #include <stdio.h> int main() { pid_t pid; printf("Hello fork()\n"); switch(pid=fork()) { case -1: printf("Error by fork().....\n"); exit(0); case 0: printf("I'm the child process \n"); break; default: printf("I'm the dad \n"); break; } …
12 c  compiler 

3
如何使继续编译?
我知道我可以make随时中断进程,而不必再次重新编译整个源代码树。据我所知,make只有在尚未编译目标时才编译目标,或者在最后一次编译后才修改源代码。 但是,如果我打断了make,肯定会有一个或多个(取决于并发级别)半就绪的二进制文件。下次我跑步时,对他们有make什么影响?还是在我按Ctrl+ C来避免部分编译的二进制文件时完成当前目标?

2
如何获得静态C编译器?
我正在使用chroot环境,我想拥有一个可移植的C编译器,这样我就可以轻松地在每个环境中设置一些基本的构建工具,而不必在周围移动太多的库。 Gcc对于我想做的事情似乎很肿,但是如果构建静态gcc相当容易,那么我就不会介意几十兆字节。 我也在看Tiny C编译器,它虽然较小,但看起来仍然具有令人印象深刻的功能集。但是,在源目录中运行./configure --help不会列出静态构建tcc的任何选项,而且我不确定该如何完成。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.