Articles of compiler construction

不能理解在linux中关于函数调用的简单c代码的输出

当我试图理解函数调用时,我写了一个简单的代码。 但是我不明白它的输出。 #include <stdio.h> int* foo(int n) { int *p = &n; return p; } int f(int m) { int n = 1; return 999; } int main(int argc, char *argv[]) { int num = 1; int *p = foo(num); int q = f(999); printf("[%d]\n[%d]\n", *p, q); /* printf("[%d]\n", *q); */ } 输出: [999] [999] […]

gcc -O4优化标志

gcc(3.2.3)中-O4优化标志的含义是什么? O3有什么区别? 你什么时候使用一个和另一个? 手册页只提到O,O0-3,O,没有神秘O4的字。 谢谢!

交叉编译器在Mac OS X上的Linux

我一直在读互联网上的许多文件关于在Mac OS X上创build一个交叉编译器的Linux,但不能缝到任何工作。 它似乎没有人能帮我解决这个问题: 让GMP与GCC 4.5.2一起工作 有什么简单的方法来创build交叉编译器?

GCC存储的string常量以及这些指针映射的位置在哪里?

当我编译并运行我的Linux x86_64机器上的C程序时,由GCC编译: #include <stdio.h> int main(void) { char *p1 = "hello"; // Pointers to strings char *p2 = "hello"; // Pointers to strings if (p1 == p2) { // They are equal printf("equal %p %p\n", p1, p2); // equal 0x40064c 0x40064c // This is always the output on my machine } else { printf("NotEqual %p […]

可以build立一个静态链接使用库的共享库?

我可以build立一个与静态链接与gcc的可执行文件: gcc -static xxx.c -o xxx 所以我可以运行xxx而不需要任何外部依赖库。 但是如果我想构build共享库而不依赖于外部库? 我的意思是我希望共享库静态链接其外部参考。

Cygwin编译错误:“这个应用程序已经请求运行时以不寻常的方式终止它”

我试图运行Cygwin,而我遇到了一些问题。 我尝试编译一个在mingw和Unix系统上都能在Windows上运行的程序,但是当我通过Cygwin去编译它时: gcc threads.c -o threads 我得到错误: 这个应用程序已经请求运行时以不寻常的方式终止它 这就是…任何想法,我忘了或搞砸了? 大约5年后我没有碰过这个东西,所以我已经生锈了。 谢谢!