警惕arm-linux-gcc编译器优化选项】的更多相关文章

一.下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid=2185900163 二.安装arm linux gcc 4.3.2 1.复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里 2.将文件解压到/usr/local目录下 解压命令tar xvzf arm-linux-gcc-4.3.2 -C /  注意以上命令必须要有-C而且是大写的…
gcc编译器优化给我们带来的麻烦??? 今天看到一个很有趣的程序,如下: ? 1 2 3 4 5 6 7 8 9 int main() {     const int a = 1;     int *b = (int*)&a;     *b = 21;       printf("%d, %d", a, *b);     return 0; } 当我第一眼看到这个程序的时候,我想当然的认为输出结果是21, 21,但是我错了 一时很难理解,于是我又输出了它们的地址: ? int …
-w: 关闭编译时的警告, 也就是编译后不显示任何warning,因此有时编译中会出现一些诸如数据转换之类的可忽略警告, -Wall: 显示编译后所有警告 -W: 显示警告,但是只是显示编译器认为的会出现错误的警告. 举例说明 对于如下程序 #include <stdio.h> void main() { int a = 10; return 0; } 情况1: 直接编译,使用如下命令 gcc -o test test.c 结果只有一个警告 test.c: In function 'main'…
arm-linux-gcc的优化选项例如(-O2),可以加速我们的程序,使程序执行效率更高.但是,倘若我们就是需要程序慢一点运行,但是优化却把我们的延时函数优化的没有了的时候,这种优化却不是我们想要的.有时候,我们需要事物差的一面.下边的代码是我的main.c程序. ; dly--); } ;              GPBCON = GPB5_out|GPB6_out|GPB7_out|GPB8_out;  ){               wait();               GPB…
原文地址http://blog.csdn.net/abc78400123/article/details/6779108 在用gdb调试,使用s 或n单步执行程序时,发现程序不是按顺序运行的,有时莫名其妙的执行到前面的语句去了,有时又执行到后面的语句,有时一次执行几条语句.后来查了下资料.原来这是编译时的优化问题所导致的. 因为内核的编译是使用make命令的,所以要更改优化等级的话,只能修改makefile文件了. 在makefile中,找到CFLAGS   然后在这加上-O0选项即可. 当然这…
GNU CC(通常称为GCC)是GNU项目的编译器,他能够编译C.C++语言编写的程序. 使用gcc,程序员可以对编译过程有更多控制,编译过程分为3个阶段. --预处理 --汇编 --链接 程序员可以在编译的任何阶段结束后体质整个编译过程以检查编译器在该阶段输出的信息 使用gcc,程序员可以控制生成二进制执行文件中调试代码的数量和类型. 和其他编译器一样,gcc也可以优化执行代码 gcc是个交叉平台编译器,所有能够在当前CPU平台上为不同操作系统开发软件 gcc对C和C++进行了一些扩展,有助于…
学习和使用c这些年来,很多方面都未深入研究过,就如脱离了IDE后,我可能连编译一个c文件的命令都写不出来. 最近需要在c中内嵌汇编解决问题,参考网上相关的资料写了一段汇编代码,在测试的时候时好时坏,找了半天也没查到原因. 后来看到一篇提到 O2 编译选项,会自动优化指令,可能会修改内嵌的汇编指令. 我试了一下,把 O2 选项去掉后,重新编译. 测试了很多次,之前出现的问题不再重现了. 难道真的是因为加了 O2 选项的原因吗? 我不能肯定,目前我只能去掉这个 O2 选项.(有人和我一样遇到同样的问…
一.测试准备及原理 测试代码: static void wait(volatile unsigned long dly) { ; dly--); } int main(void) { unsigned ; // LED1,LED2,LED3,LED4对应的4根引脚设为输出 GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out; ){ wait(); GPBDAT = (~(i<<)); // 根据i的值,点亮LED1,2,3,4 ) i = ;…
C 编译器优化过程中的 Bug 一个朋友向我指出一个最近他们发现的 GCC 编译器优化过程(加上 -O3 选项)里的 bug,导致他们的产品出现非常诡异的行为.这使我想起以前见过的一个 GCC bug.当时很多人死活认为那种做法是正确的,跟他们说不清楚.简言之,这种有问题的优化,喜欢利用 C 语言的“未定义行为”(undefined behavior)进行推断,最后得到奇怪的结果. 这类优化过程的推理方式都很类似,他们使用一种看似严密而巧妙的推理,例如:“现在有一个整数 x,我们不知道它是多少.…
http://hi.baidu.com/xiaole10368/item/7cea9b1369cc240db88a1a5c 少优化->多优化: O0 -->> O1 -->> O2 -->> O3 -O0表示没有优化,-O1为缺省值,-O3优化级别最高 英文解析: `-O ' `-O1 '                 Optimize.      Optimizing   compilation   takes   somewhat   more   time…