标签: gcc

为什么 FreeBSD 弃用 GCC 而支持 Clang/LLVM?

所以我在网上冲浪,偶然发现了这篇文章。它基本上表明FreeBSD从版本 10 及更高版本开始将弃用GCC以支持Clang/LLVM

从我目前在网上看到的情况来看,Clang/LLVM是一个相当雄心勃勃的项目,但在可靠性方面它无法与GCC 相提并论

FreeBSD 选择 LLVM 作为他们的编译器基础设施是否有任何技术原因,或者整个问题归结为永恒的 GNU/GPL 与 BSD 许可证?

这个问题有(以某种方式)关于在FreeBSD 中使用GCC 的相关信息

freebsd compiling c gcc llvm

248
推荐指数
4
解决办法
9万
查看次数

如何从头编译C编译器,然后从头编译Unix/Linux

假设我在美国/英国以外的一家大型服务机构工作。我们广泛使用 UNIX 和 Linux 服务器。

通读这篇文章,它提到将后门插入 C 编译器很容易,然后用该编译器编译的任何代码也将包含后门。现在鉴于最近有关 NSA/GCHQ 授权在所有加密方法、硬件和软件中放置后门/弱点的泄密事件,编译器现在是一个关键的故障点。可能所有标准的 UNIX/Linix 发行版都可能受到损害。我们不能让流氓政府损害我们的系统、数据和客户数据。

鉴于这些信息,我想从头开始构建一个受信任的编译器,然后我有一个安全的基础来构建,这样我就可以使用该编译器从源代码构建操作系统和应用程序。

从源代码编译编译器(一个看似鸡生蛋的场景)然后从头开始编译受信任的 Unix/Linux 发行版的正确(和安全方法)是什么?

您可以假设我或其他人有能力阅读和理解安全漏洞的源代码,因此在编译之前将首先审查源代码。我真正想要的是一份从头开始安全地生成这个编译器的工作指南,可用于编译内核、操作系统的其他部分和应用程序。

如果我们要对在该堆栈上运行的操作系统或应用程序有任何信心,安全堆栈必须从基础级别开始。是的,我知道可能存在硬件后门,它们可能会在编译器构建时将一些微代码插入到编译器中。除了可能使用不是在美国设计的芯片之外,我们目前对此无能为力。让我们先对这一层进行排序,并假设我可以在插入任何后门之前在旧计算机上构建它。

正如布鲁斯·施奈尔 (Bruce Schneier) 所说:“我对工程师们说:我们建立了互联网,我们中的一些人帮助颠覆了它。现在,我们这些热爱自由的人必须修复它。”

额外链接:

linux compiling kernel compiler gcc

64
推荐指数
3
解决办法
4685
查看次数

配置:错误:C 编译器无法创建可执行文件

我正在尝试将 apache 2.2.15 升级到 2.2.27。在运行从 apache2.2.15/build 获取的 config.nice 时,我收到以下错误:

checking whether the C compiler works... no
configure: error: in `/home/vkuser/httpd-2.2.27/srclib/apr':
configure: error: C compiler cannot create executables
Run Code Online (Sandbox Code Playgroud)

我试图在网上搜索但没有运气。我还通过运行一个小的 test.c 脚本测试了 c 编译器,它运行良好。在线提供的解决方案很少,例如安装“kernel-devel”软件包,但没有解决问题。我怎样才能让它发挥作用?

以下是生成的 config.log:

    This file contains any messages produced by compilers while
    running configure, to aid debugging if configure makes a mistake.

    It was created by configure, which was
    generated by GNU Autoconf 2.67.  Invocation command line was

      $ ./configure --prefix=/opt/myapp/apache2.2 --with-mpm=worker --enable-static-support --enable-ssl=static --enable-modules=most --disable-authndbd --disable-authn-dbm --disable-dbd --enable-static-logresolve …
Run Code Online (Sandbox Code Playgroud)

compiling gcc 32bit apache-httpd

46
推荐指数
2
解决办法
20万
查看次数

这个 Makefile 如何在不指定编译器的情况下制作 C 程序?

我使用的是“ Advanced Linux Programming (2001)” [code]一书中的 Makefile 。我很奇怪看到GNU make确实正确编译了代码,甚至没有在 Makefile 中指定编译器。这就像没有任何食谱烘焙!

这是代码的最小版本:

测试.c

int main(){}
Run Code Online (Sandbox Code Playgroud)

生成文件

all:            test
Run Code Online (Sandbox Code Playgroud)

并真正起作用!这是它执行的命令:

cc     test.c   -o test
Run Code Online (Sandbox Code Playgroud)

我在文档中找不到任何有用的东西。这怎么可能?


PS 额外说明:连语言都没有指定;因为test.c可用,GNUmake使用cc. 如果存在test.cpptest.cc(当没有时test.c),它使用g++(而不是c++)。

linux make gcc gnu-make

42
推荐指数
1
解决办法
4326
查看次数

编译gcc 7.3.0需要多长时间?

到目前为止,它已经运行了大约 4 个小时。需要注意的一件事是我没有先决条件,必须通过 contrib/download_prerequisites 下载它们。不确定它是否会增加编译时间。

机器规格如下:

4 CPUs Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz

uname -a
Linux <name> 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 13:49:55 PST 2018 x86_64 x86_64 x86_64 GNU/Linux


free -m
total        used        free      shared  buff/cache   available
Mem:          11854         676        1040           8       10137       
10821
Swap:          5119           0        5119
Run Code Online (Sandbox Code Playgroud)

gcc

39
推荐指数
1
解决办法
1万
查看次数

cc1和gcc的关系?

我正在尝试在 Linux 服务器上的主目录中安装 Ruby(没有 root 访问权限),这当然需要使用gcc. 我能找到的最接近的是该名称的目录(如果你足够深入)包含cc1

>: find / -iname gcc 2> /dev/null
/usr/libexec/gcc


>: tree -if /usr/libexec/gcc
/usr/libexec/gcc
/usr/libexec/gcc/x86_64-redhat-linux
/usr/libexec/gcc/x86_64-redhat-linux/4.1.1
/usr/libexec/gcc/x86_64-redhat-linux/4.1.1/cc1
/usr/libexec/gcc/x86_64-redhat-linux/4.1.2 -> 4.1.1
Run Code Online (Sandbox Code Playgroud)

CC1 在维基百科上重定向到 GCC的事实似乎暗示着某种接近身份的东西,但是除了关于重定向的说明之外,GCC 页面上没有其他提及 CC1,而且谷歌搜索没有给我任何有用的东西,我尝试cc1gcc失败的地方。

他们之间究竟是什么关系?它是否让我有希望在这台机器上编译 Ruby?

gcc

31
推荐指数
3
解决办法
4万
查看次数

什么是金接头?

有没有人gold以前使用过链接器?为了链接一个相当大的项目,我不得不使用它而不是 GNU ld,后者抛出了一些错误并且无法链接。

gold链接器如何能够链接ld失败的大型项目?某处是否存在某种记忆欺骗?

linux memory gcc linker dynamic-linking

26
推荐指数
2
解决办法
8664
查看次数

如何在 debian jessie 8.1 上安装 GCC 5

我尝试了许多解决方案来在 debian 服务器上为我的 gcc 编译器安装更新。他们都没有工作。我需要编译器更新才能使用 c++11 的新功能,因为这提供了稳定的 libcxx11 ABI,以及对 C++11 的稳定支持(请参阅此处)。专门获取版本“GLIBCXX_3.4.21”,该版本未包含在我当前的编译器 gcc 版本 4.9.2(Debian 4.9.2-10)中。

一些解决方案的指针会有所帮助。提前致谢。

一些与我已经尝试过的问题相关的论坛链接:

1 2 3(不完全相关的解决方案适用于 ubuntu,但我在 debian 的 ftp 服务器中找不到 gcc-5)

debian gcc c++ g++

22
推荐指数
3
解决办法
5万
查看次数

使用 -O3 优化编译 GNU/Linux

据说用-O3gcc 优化选项编译 GNU 工具和 Linux 内核会产生奇怪和时髦的错误。这是真的吗?有没有人尝试过,还是只是一个骗局?

linux compiling kernel gcc options

21
推荐指数
5
解决办法
2万
查看次数

在 Centos 7.3 上为 python3 安装 psycopg2 包的 gcc 错误

根据这个答案,我执行了一系列先决条件设置以准备pip安装python3软件包。

然而,当我跑

python3 -m pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Downloading/unpacking psycopg2
  Downloading psycopg2-2.6.2.tar.gz (376kB): 376kB downloaded
  Running setup.py (path:/tmp/pip-build-1ocbvumt/psycopg2/setup.py) egg_info for package psycopg2

Installing collected packages: psycopg2
  Running setup.py install for psycopg2
    Skipping implicit fixer: buffer
    Skipping implicit fixer: idioms
    Skipping implicit fixer: set_literal
    Skipping implicit fixer: ws_comma
    building 'psycopg2._psycopg' extension
    gcc -pthread -Wno-unused-result -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -I/opt/rh/rh-python34/root/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong …
Run Code Online (Sandbox Code Playgroud)

gcc centos python3

21
推荐指数
2
解决办法
2万
查看次数