Questions tagged «gcc»

GCC是GNU编译器集合。它是Linux上针对C,C ++,Go,Fortran和Ada的事实上的标准编译器,并且还支持许多其他语言和平台。除编译器外,GCC还具有一个工具链(libc,libstdc ++,objdump,nm等),该工具链已在多个平台和系统上广泛使用。

11
负数模运算
在C程序中,我正在尝试以下操作(只需检查行为) x = 5 % (-3); y = (-5) % (3); z = (-5) % (-3); printf("%d ,%d ,%d", x, y, z); 给我的输出与(2, -2 , -2)gcc中的一样。我每次都期待一个积极的结果。模数可以为负吗?有人可以解释这种行为吗?
191 c  gcc  modulo 


3
为什么GCC对于几乎相同的C代码生成如此根本不同的汇编?
在编写优化ftol函数时,我在中发现了一些非常奇怪的行为GCC 4.6.1。首先让我向您展示代码(为清楚起见,我标记了不同之处): fast_trunc_one,C: int fast_trunc_one(int i) { int mantissa, exponent, sign, r; mantissa = (i & 0x07fffff) | 0x800000; exponent = 150 - ((i >> 23) & 0xff); sign = i & 0x80000000; if (exponent < 0) { r = mantissa << -exponent; /* diff */ } else { r …

1
禁用所有gcc警告
我正在开发一个项目,该项目将读取特定种类的编译器错误消息并对其进行有用的处理。我正在(随机的开源应用程序)上对其进行测试的示例代码库(因此经常进行重建)包含一些生成警告的位,这对我来说并不重要。 如何禁用来自GCC的所有警告,因此如果有错误消息,我只能看到错误消息?
184 gcc  g++  warnings 

2
实际使用C99'restrict'关键字吗?
我浏览了一些文档和问题/答案,并看到其中提到的内容。我读了一个简短的说明,指出程序员基本上会保证不会使用指针指向其他地方。 谁能提供一些实际的案例,值得使用它吗?
182 c  gcc  c99  restrict-qualifier 


6
我的Linux开发项目使用Clang vs GCC
我正在上大学,并且对于一个正在使用C的项目,我们已经探索了GCC和Clang,并且Clang似乎比GCC更友好。结果,我想知道使用clang(相对于GCC)在Linux上用C和C ++进行开发有什么优点或缺点? 就我而言,这将用于学生级别的课程,而不是生产课程。 如果使用Clang,应该使用GDB进行调试并使用GNU Make,还是使用其他调试器和make实用程序?
175 c++  c  linux  gcc  clang 

8
errno是线程安全的吗?
在中errno.h,此变量被声明为extern int errno;是我的问题,errno在某些调用之后检查值还是在多线程代码中使用perror()是安全的。这是线程安全变量吗?如果没有,那还有什么选择呢? 我在x86体系结构上将Linux与gcc一起使用。
174 c  linux  multithreading  gcc 

11
“ / usr / bin / ld:找不到-lz”
我正在尝试在Ubuntu 10.04下编译Android源代码。我收到一个错误消息, / usr / bin / ld:找不到-lz 你能告诉我如何解决吗?什么cannot find -lz意思 这是完整的错误消息: external/qemu/Makefile.android:1101: warning: overriding commands for target `external/qemu/android/avd/hw-config-defs.h' external/qemu/Makefile.android:933: warning: ignoring old commands for target `external/qemu/android/avd/hw-config-defs.h' host SharedLib: libneo_cgi (out/host/linux-x86/obj/lib/libneo_cgi.so) /usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.so when searching for -lz /usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.a when searching for -lz /usr/bin/ld: skipping incompatible …
172 linux  gcc  linker 

4
使用GCC 5.4.0进行昂贵的跳转
我有一个看起来像这样的函数(仅显示重要部分): double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int shiftY) { ... for(std::size_t i=std::max(0,-shift);i<max;i++) { if ((curr[i] < 479) && (l[i + shift] < 479)) { nontopOverlap++; } ... } ... } 这样写,该功能在我的机器上花了〜34ms。将条件更改为布尔乘法(使代码如下所示)后: double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int shiftY) { ... for(std::size_t i=std::max(0,-shift);i<max;i++) …
171 c++  gcc 

11
单个主机上的多个glibc库
单个主机上的多个glibc库 我的Linux(SLES-8)服务器当前具有glibc-2.2.5-235,但是我有一个无法在该版本上运行的程序,并且需要glibc-2.3.3。 是否可以在同一主机上安装多个glibcs​​? 这是我在旧glibc上运行程序时遇到的错误: ./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./myapp) ./myapp: /lib/i686/libpthread.so.0: version `GLIBC_2.3.2' not found (required by ./myapp) ./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libxerces-c.so.27) ./myapp: /lib/ld-linux.so.2: version `GLIBC_2.3' not found (required by ./libstdc++.so.6) ./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libstdc++.so.6) 因此,我创建了一个名为newglibc的新目录,并将以下文件复制到其中: …
171 linux  gcc  glibc 

11
编译Nachos源代码时出现错误“ gnu / stubs-32.h:没有这样的文件或目录”
我正在尝试在笔记本电脑上安装Nachos,并且笔记本电脑上具有Ubuntu 11.04。 代码在C语言中,因此要构建它,我假设我将需要交叉编译器。这是我的问题所在。我使用以下命令下载了MIPS交叉编译器的源代码 wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz 我用解压缩 tar zxvf mips-decstation.linux-xgcc.gz 没关系,但是当我尝试使用make构建nachos os的源代码时,出现此错误- /usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. make: *** [bitmap.o] Error 1 我正在尝试按照此处给出的说明进行操作-http: //mll.csie.ntu.edu.tw/course/os_f08/217.htm,并且除我尝试使用make之外,其他一切都正常。

7
ld找不到现有的库
我正在尝试在此Debian lenny系统上使用g ++链接应用程序。ld抱怨找不到指定的库。这里的特定示例是ImageMagick,但其他一些库也遇到类似的问题。 我通过以下方式调用链接器: g++ -w (..lots of .o files/include directories/etc..) \ -L/usr/lib -lmagic ld抱怨: /usr/bin/ld: cannot find -lmagic 但是,libmagic存在: $ locate libmagic.so /usr/lib/libmagic.so.1 /usr/lib/libmagic.so.1.0.0 $ ls -all /usr/lib/libmagic.so.1* lrwxrwxrwx 1 root root 17 2008-12-01 03:52 /usr/lib/libmagic.so.1 -> libmagic.so.1.0.0 -rwxrwxrwx 1 root root 84664 2008-09-09 00:05 /usr/lib/libmagic.so.1.0.0 $ ldd /usr/lib/libmagic.so.1.0.0 …


4
警告:内置函数“ xyz”的隐式声明不兼容
编译一些二进制文件时,我收到许多这样的警告: warning: incompatible implicit declaration of built-in function ‘strcpy’ warning: incompatible implicit declaration of built-in function ‘strlen’ warning: incompatible implicit declaration of built-in function ‘exit’ 为了解决这个问题,我添加了 #include <stdlib.h> 除了使用以下标志进行编译之外,还位于与此警告相关的C文件的顶部: CFLAGS = -fno-builtin-exit -fno-builtin-strcat -fno-builtin-strncat -fno-builtin-strcpy -fno-builtin-strlen -fno-builtin-calloc 我正在使用GCC 4.1.2: $ gcc --version gcc (GCC) 4.1.2 20080704 我应该怎么做才能解决这些警告?
164 c  gcc  gcc-warning 

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.