Articles of gcc

GCC 4.8和4.7会在同一台机器上和平共处吗?

安装gcc 4.7和4.8会在同一台机器上和平共存吗? 这将最初是Ubuntu 12.10(Quantal Quetzal)的机器,但可能会延长到其他机器和发行版,可能甚至我的Mac(这将是4.8和山狮最后提供的苹果gcc)。 我试图testing海湾合作委员会的改进诊断4.8比较他们叮当,因此我需要海湾合作委员会4.8。 如果上面的答案是肯定的,你如何调用gcc的每个安装?

如何在Linux上安装自定义gcc的boost?

我的gcc编译器位于自定义位置/ my / path / hpgcc 我已经下载了boost源码。 执行bootstrap.sh,但因为它使用默认的gcc运行,所以失败。 看着它,我发现它在第一件事情上失败了:构buildBoost.Build引擎: gcc -o bootstrap/jam0 command.c compile.c debug.c expand.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c output.c parse.c pathunix.c pathvms.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c md5.c w32_getreg.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c execunix.c […]

返回到libc在gdb中工作,但不是在单独运行时

我正在尝试使用以下简单代码返回到libc技巧: #define SYSTEM_CALL_ADDR 0xb7ec5e50 /*my system call addr*/ #define EXIT_CALL_ADDR 0xb7ebbb80 /*my exit call addr*/ char shell[] = "/bin/sh"; int main(){ int* p; p = (int*)&p + 2; *p = SYSTEM_CALL_ADDR; p = (int*)&p + 3; *p = EXIT_CALL_ADDR; p = (int*)&p + 4; *p = shell; return 1; } 有趣的是,当我运行这个程序时,它以“分段错误”结束,但如果我使用gdb进行debugging并逐步运行,那就完全正常了,产生一个shell然后退出程序。 有人遇到这种情况? 或者有人请指导我如何纠正这一点? 首先感谢。 我在ArchLinux内核上:2.6.33,gcc […]

编译和链接Debian 64位上的32位应用程序

我目前正在试图编译和链接我的Debian 64位上的32位应用程序,但在链接时失败。 我正在使用(在我的Makefile中)编译的命令是: gcc -Os -m32 -Wall -g -c $< -o $@ 这似乎工作。 然后我用下面的命令链接: gcc -m32 -lcurses $^ -o $@ 这会失败,并提供以下错误: /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libcurses.so when searching for -lcurses /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libcurses.a when searching for -lcurses /usr/bin/ld: skipping incompatible /usr/lib/libcurses.so when searching for -lcurses /usr/bin/ld: skipping incompatible /usr/lib/libcurses.a when searching for -lcurses /usr/bin/ld: cannot […]

如何使libusb库对另一个程序可见?

我正在编译hidapi库。 为了编译,我需要libusb-1.0 。 我已经下载,configuration,制作并安装到/usr/local/lib 。 但是当我尝试编译hidapi ,并没有看到libusb-1.0 : cc -Wall -g -c -I ../ hidapi pkg-config libusb-1.0 –cflags hid-libusb.c -o hid-libusb.o -L / usr / local / lib在libusb-1.0中找不到包pkg-configsearchpath。 也许你应该将包含`libusb-1.0.pc'的目录添加到PKG_CONFIG_PATH环境variables中。找不到包'libusb-1.0'/ bin / sh:cc:not found make: * [hid-libusb.o]错误127 我该如何解决这个问题? (编译发生在Synology NAS上)

沙盒公开访问GCC

我想添加一个function到一个基于Linux的Web服务,允许不可信用户上传源代码到一个小的C ++程序,并将该代码自动保存到服务器上的文件,并用gcc编译,然后执行,捕获标准输出。 (这是一个与ideone.com,或者spoj.pl,或者topcoder.com,或者codechef.com或者许多其他网站完全不同的function。) 我的问题是: Q1。 我如何沙箱的可执行文件,以防止恶意用户试图破坏文件系统或访问networking等? Q2。 是否有一个公平/准确的方法来将系统资源加速处理,如处理器时间和内存使用情况?

如何用最新的GCC构build旧的源代码?

我正在尝试构buildOSKit源代码。 它是最初写在gcc 2.95.2,但在我的箱子,我得到了gcc 4.3.2。 而4.3.2不允许以下语法: asm volatile(" pushfl popl %0" : "=r" (eflags)); return eflags; 4.3.2总是抱怨说: error: missing terminating " character 有这么多的语法,有没有办法让4.3.2接受这个? 还是有更通用的方法让4.3.2像2.95.2一样? 或者我可以在哪里下载gcc的2.95.2版本? 谢谢! 更新 我真正的目标是build立OSKit 。 OSKit声称是与GCC 2.7.x或2.95.2 compilabe。 我的Ubuntu 8.10安装了GCC 4.3.2。 我尝试了以下编译序列: 4.3.2build立2.95.2 —失败 4.3.2-> 3.3.6 – > 2.7.2.3 —成功。 4.3.2 – > 2.7.2.3 —成功 3.3.6 – > 2.95.2 —失败 虽然我还没有2.95.2,但我至less得到了2.7.2.3。 但OSKit仍然与2.7.2.3 […]

pthread_create导致分段错误

我的程序包含以下代码。 pthread_t PThreadTable[32]; for (i=1; i<P; i++) // Checked with P = 4 { long i, Error; printf( "pthread_create %d!\n", i ); Error = pthread_create(&PThreadTable[i], NULL, (void * (*)(void *))(SlaveStart), NULL); if (Error != 0) { printf("Error in pthread_create().\n"); exit(-1); } } SlaveStart(); 该代码给调用pthread_create (通过gdb和valgrind检查)分段错误。 为什么这样?

rand()不返回随机值

它的一个小代码来生成一个随机厄米matrix厄密matrix 。 在每次调用rand()之前,我都调用了srand()。 但输出中仍然没有随机性。 我已经使用c99的复杂数据typesfunction来创build一个厄密matrix。 我不知道我错在哪里:( #include <stdio.h> #include <math.h> #include <complex.h> #include <stdlib.h> #include <time.h> #define MATSIZE 5 #define RAND_RANGE 100 double complex mat[MATSIZE][MATSIZE]; void gen_mat() { int i =0,j; int real; int img; for( ;i < MATSIZE; i++) { srand(time(NULL)); real = rand()%RAND_RANGE + 1; srand(time(NULL)); img = rand()%RAND_RANGE + 1; for(j = […]

使用gcc / g ++ / gdb / valgrind进行debugging时的魔术数字?

微软的Visual C ++如果没有被程序员自己初始化,就会用“幻数”填充内存。 这有助于debugging未初始化的内存。 ( 在Visual Studio C ++中,什么是内存分配表示? , 0xDEADBEEF与NULL ) 使用Linux GNU工具(g ++ / gdb)时有没有类似的function? 谢谢!