Questions tagged «gcc»

有关GNU Compiler Collection Suite的问题。

4
为什么FreeBSD不赞成使用GCC而赞成Clang / LLVM?
所以我在网上逛逛,偶然发现了这篇文章。从根本上说,从版本10及更高版本开始,FreeBSD将弃用GCC,而推荐使用Clang / LLVM。 从到目前为止我在网上看到的内容来看,Clang / LLVM是一个相当雄心勃勃的项目,但是就可靠性而言,它不能与GCC相匹配。 FreeBSD选择LLVM作为其编译器基础结构是否有任何技术原因,还是整个事情归结为永恒的GNU / GPL与BSD许可? 这个问题(以某种方式)具有有关FreeBSD中GCC用法的相关信息。
241 freebsd  compiling  gcc  c  llvm 

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

1
此Makefile如何使C程序甚至不指定编译器?
我正在使用《高级Linux编程(2001)》[代码]一书中的Makefile 。看到GNU make确实正确编译了代码,甚至没有在Makefile中指定编译器,我感到很奇怪。这就像没有任何食谱的烘烤! 这是代码的最低版本: 测试 int main(){} 生成文件 all: test 并使其真正起作用!这是它执行的命令: cc test.c -o test 我找不到任何有用的文档。这怎么可能? PS另加一点注意:甚至没有指定语言;因为test.c可用,所以GNU make使用cc。如果存在test.cpp或test.cc(不存在test.c),则使用g++(而不是c++)。
41 linux  make  gcc  gnu-make 

4
配置:错误: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 我尝试过在线搜索,但没有运气。我还通过运行一个小的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 …

1
编译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 …
25 gcc 

4
cc1和gcc之间的关系?
我试图将Ruby安装在Linux服务器上的主目录中(没有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 CC1重定向到Wikipedia上的GCC的事实似乎暗示着一些接近身份的事实,但是,在GCC页面上,除了关于重定向的注释外,没有其他提及CC1的信息,并且Google搜索对我没有任何帮助,并且我尝试cc1在gcc失败的地方。 它们之间到底是什么关系?它给我在此机器上编译Ruby的希望吗?
23 gcc 

4
如何在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)
21 debian  gcc  c++  g++ 


3
gcc无法链接到pthread?
我最近安装了64位XUbuntu 11.10,但是在编译最简单的pthread示例时遇到问题。 这是代码pthread_simple.c: #include <stdio.h> #include <pthread.h> main() { pthread_t f2_thread, f1_thread; void *f2(), *f1(); int i1,i2; i1 = 1; i2 = 2; pthread_create(&f1_thread,NULL,f1,&i1); pthread_create(&f2_thread,NULL,f2,&i2); pthread_join(f1_thread,NULL); pthread_join(f2_thread,NULL); } void *f1(int *x){ int i; i = *x; sleep(1); printf("f1: %d",i); pthread_exit(0); } void *f2(int *x){ int i; i = *x; sleep(1); …
17 c  libraries  gcc  xubuntu 

1
GCC如何知道Boost安装在哪里
我sudo apt-get install在Ubuntu上安装了boost使用。后来,我不必给gcc I标志以及使用boost的boost库路径。我也没有做任何事情pkg-config --cflags --libs。这里的奥秘是什么?gcc如何知道boost在哪里以​​及如何自动链接到它?
13 gcc  libraries  boost 

3
手动查找并安装man文件
我似乎缺少一些手册页,特别是gcc和g ++。指定该部分无济于事。whereis没有列出这两个手册页,所以我认为它们根本不在那。 有了Google,我得到了很多东西,例如:http : //linux.die.net/man/1/g++(虽然似乎是普通的HTML ...还是手册页标记?) 我认为这将是一个学习如何手动替换它们的好机会。我猜我在寻找gcc.1.gz文件? 我是从GNU,Debian还是从某种程度上将其自动化?这些文件中放置了多少工作-如果得到一个文件,它可能是99%正确的,或者它们在时间/架构上确实有很大不同吗?
13 debian  man  gcc  roff 

1
Linux,GNU GCC,ld,版本脚本和ELF二进制格式-如何工作?
我试图了解有关Linux中库版本控制的更多信息,以及如何使它们全部正常工作。这里是上下文: -我有两个版本的动态库,它们公开了相同的一组接口,例如libsome1.so和libsome2.so。 -应用程序链接到libsome1.so。 -此应用程序用于libdl.so动态加载另一个模块,例如libmagic.so。 -现在libmagic.so链接libsome2.so。显然,在不使用链接程序脚本隐藏其中的符号的情况下libmagic.so,在运行时,所有对接口的调用libsome2.so都解析为libsome1.so。可以通过libVersion()对照宏的值检查返回的值来确认LIB_VERSION。 -所以我接下来尝试编译并链接libmagic.so一个链接描述文件,该脚本隐藏除其中定义libmagic.so和导出的3个符号以外的所有符号。这行得通...或至少libVersion()和LIB_VERSION值匹配(并且报告版本2不是1)。 -但是,当某些数据结构序列化到磁盘时,我注意到了一些损坏。在应用程序目录中,如果我删除libsome1.so并在其指向的位置创建一个软链接libsome2.so,则一切都会按预期工作,并且不会发生相同的损坏。 我忍不住认为这可能是由于运行时链接程序的符号解析中的某些冲突引起的。我尝试了很多事情,例如尝试链接,libsome2.so以便所有符号都被链接到symbol@@VER_2(我仍然感到困惑,因为该命令nm -CD libsome2.so仍将符号列为symboland而不是symbol@@VER_2)……似乎没有任何作用!!!救命!!!!!!

5
在rhel 6 x86_64上安装最新的gcc
我有一个gcc版本4.4.7的RHEL 6服务器。我想更新gcc版本(我认为当前版本是4.8)。百胜更新不起作用。同样,在CentOS上针对类似问题的SO答案也不起作用。我按照接受的答案中的方法进行操作,输出为“在获取用于testing-1.1-devtools-6的存储库数据时出错,未找到存储库”。另外,我不确定是否应遵循CentO的方法。 是否有人在RHEL 6 x86_64服务器中更新了gcc?

2
是什么设置fs:[0x28](堆栈金丝雀)?
从这篇文章中可以看出,这FS:[0x28]是一个堆栈-canary。我正在使用此功能的GCC生成相同的代码, void foo () { char a[500] = {}; printf("%s", a); } 具体来说,我正在开会。 0x000006b5 64488b042528. mov rax, qword fs:[0x28] ; [0x28:8]=0x1978 ; '(' ; "x\x19" 0x000006be 488945f8 mov qword [local_8h], rax ...stuff... 0x00000700 488b45f8 mov rax, qword [local_8h] 0x00000704 644833042528. xor rax, qword fs:[0x28] 0x0000070d 7405 je 0x714 0x0000070f e85cfeffff …
13 linux  security  gcc  stack 

2
为什么gcc在Arch Linux中在目标:x86_64-unknown-linux-gnu中显示“未知”?
我想知道为什么gcc -v在Arch Linux下运行时,unknown在以下输出中显示该词: Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/lto-wrapper Target: x86_64-unknown-linux-gnu 在其他发行版中,例如ubuntu,它显示发行版名称,例如ubuntu: Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-ubuntu-linux-gnu/5.1.0/lto-wrapper Target: x86_64-ubuntu-linux-gnu
12 linux  arch-linux  gcc 

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.