Tag: gcc

OS X下的CMake和GCC损坏

在我的OS X平台上运行cmake-gui configure ,出现以下错误: The C compiler identification is GNU The CXX compiler identification is GNU Checking whether C compiler has -isysroot Checking whether C compiler has -isysroot – yes Checking whether C compiler supports OSX deployment target flag Checking whether C compiler supports OSX deployment target flag – yes Check for working C compiler: […]

编译C代码的字符串

真的离开墙问题,但有没有办法在GCC中编译一串C代码而没有任何媒介来保存该字符串(例如,源文件)? 有点像: $ gcc “#include int main( void ){ printf(‘hello world’); return 0;}” -o test 感觉真的很脏,但如果有一些简单的方法来做这种事情,那将是非常好的。

pthread_create()的返回码是11

我试图运行一个简单的multithreading编程,我从gcc得到这个错误 pthread_create()的返回码是11 我该如何解决这个问题? #include #include #include #define NUM_THREADS 20000 void *PrintHello(void *threadid) { long tid; tid = (long)threadid; printf(“Hello World! It’s me, thread #%ld!\n”, tid); pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0; t<NUM_THREADS; t++){ printf("In main: creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void […]

gcc中的全局寄存器变量

最近我在一次采访中被问及全局寄存器变量。我搞砸了说任何全局变量都将存储在数据段中。但后来我被问及GCC。在采访后我得出结论gcc支持全局寄存器变量。 #include register int var asm(“ebx”); //storing global variable in register explicitly int main(void) { ……. } 这是链接https://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html#Global-Reg-Vars 但现在我对它的生命周期和范围感到困惑,它是作为普通的全局变量还是作为寄存器变量工作? gcc上还有任何方法或命令,以便我们确保编译器不会简单地忽略register关键字并将存储在实际的寄存器中吗?

用Clang的嵌套函数重写GCC清理宏?

我正在尝试解决第三方库中的问题。 问题是库使用GCC嵌套在宏中的嵌套函数,并且Clang不支持嵌套函数,并且没有计划这样做(参见, Clang Bug 6378 – 错误:函数上的非法存储类 )。 这是我和Clang痛点的宏观: #define RAII_VAR(vartype, varname, initval, dtor) \ /* Prototype needed due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36774 */ \ auto void _dtor_ ## varname (vartype * v); \ void _dtor_ ## varname (vartype * v) { dtor(*v); } \ vartype varname __attribute__((cleanup(_dtor_ ## varname))) = (initval) 以下是它的使用方法(来自代码注释): * void do_stuff(const char […]

致命错误:iostream:使用GCC编译C程序时没有这样的文件或目录

为什么当我想编译以下multithreading合并排序C程序时,我收到此错误: ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread mer.c:4:20: fatal error: iostream: No such file or directory #include ^ compilation terminated. ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread mer.c:4:22: fatal error: iostream.h: No such file or directory #include ^ compilation terminated. 我的节目: #include #include #include #include using namespace std; #define N 2 /* […]

R-Perl安装GCC 4.0的问题:如何删除不必要的-arch标志

我想安装R-Perl模块以在Perl中使用R,但是没有成功使用命令sudo R CMD INSTALL –configure-args=’–with-in-perl’ RSPerl/如下所示: http ://www.omegahat.org/RSPerl/RFromPerl.html 。 我之前发布过有关此问题的信息,并确定我遇到了新的GCC 4.2问题。 但是,我现在正在使用GCC 4.0.1并且遇到了不同的问题。 以下是上述命令的输出: * installing to library ‘/Library/Frameworks/R.framework/Versions/2.13/Resources/library’ * installing *source* package ‘RSPerl’ … checking for perl… /usr/bin/perl No support for any of the Perl modules from calling Perl from R. ***************************************************** Set PERL5LIB to /Library/Frameworks/R.framework/Versions/2.13/Resources/library/RSPerl/perl ***************************************************** Testing: -F/Library/Frameworks/R.framework/.. -framework R Using ‘/usr/bin/perl’ as […]

在-255到255范围内,signed char溢出是否未定义?

根据GCC在C99模式下,以下代码是未定义的行为: signed char c = CHAR_MAX; // assume CHAR_MAX < INT_MAX c = c + 1; printf("%d", c);

函数返回值的生命周期是多少?

我读到了函数调用之间的return值, 并尝试使用以下代码段: /* file structaddr.c */ #include #define MSIZE 10 struct simple { char c_str[MSIZE]; }; struct simple xprint(void) { struct simple ret = { “Morning !” }; return ret; } int main(void) { printf(“Good %s\n”, xprint().c_str); return 0; } 编译代码时没有错误和警告。 使用GCC 4.4.3(Ubuntu 4.4.3-4ubuntu5.1)和Visual C ++编译器进行测试。 gcc -m32 -std=c99 -Wall -o test structaddr.c cl -W3 […]

更多GCC链接时间问题:对main的未定义引用

我正在为Cortex-A8处理器编写软件,我必须编写一些ARM汇编代码来访问特定的寄存器。 我正在使用gnu编译器和相关工具链,这些工具安装在带有Ubuntu的处理器板(Freescale i.MX515)上。 我使用WinSCP和PuTTY终端从我的主机PC(Windows)连接到它。 像往常一样,我开始使用一个带有main.c和functions.s的简单C项目。 我使用GCC 编译 main.c,使用as 汇编 functions.s并再次使用GCC 链接生成的目标文件,但在此过程中我得到了奇怪的错误。 一个重要发现 – 同时,我发现我的汇编代码可能有一些问题,因为当我使用命令as -o functions.o functions.s单独组装它时,尝试运行生成的函数。使用./functions.o命令,bash shell无法将此文件识别为可执行文件(在按Tab键function时。未选中/ PuTTY未突出显示该文件)。 任何人都可以建议这里发生什么? 在链接过程中,我是否需要向GCC发送任何特定选项 ? 我看到的错误是奇怪的,超出了我的理解,我不明白GCC所指的是什么。 我在这里粘贴main.c,functions.s,Makefile和错误列表的内容。 请帮忙!!! 根据人们的建议编辑makfile之后包含的最新错误 – ubuntu@ubuntu-desktop:~/Documents/Project/Others/helloworld$ make gcc -c -mcpu=cortex-a8 main.c as -mcpu=cortex-a8 -o functions.o functions.s gcc -o hello main.o functions.o functions.o: In function `_start’: (.text+0x0): multiple definition of `_start’ /usr/lib/gcc/arm-linux-gnueabi/4.3.3/../../../crt1.o:init.c:(.text+0x0): first defined […]