mingu.zheng　at　gmail　dot　com　http://blog.csdn.net/zoomdy/article/details/79251021有些时候会希望某个函...　gcc的编译优化中使用了乱序执行,让我的无锁结构在多线程环境中出错,如果关闭o2代码对于和这部分无关的代码就没办法进行优化了。gcc中有任何的宏命令可以对某一部分代码关闭编译优化么?　arm-none-linux-gnueabi-g++:　error　trying　to　exec　'cc1plus':　execvp:　No　such　file　or　dictionary　1. arm-none-linux-gnueabi-g++不存在2. arm-none-linux-gnueabi-g++和arm-none-linux-gnueabi-gcc版本不一致3.　工具链目录下的libexec某子文件夹下缺少cc1plus文件　方法之一么,就是把for延迟的函数单独放到一个文件里,设置该文件优化等级为-00来编译。不过我在这个例程里不使用这个方法。看一下下面这个实验代码(不是试验,因为linux的内核代码里就有这个用法,我照搬了^_^)std=gnu99-0s/*　main.c　就这一个文件,最高优化*/#include　uint8_t　t1=127;uint8_t　chgt1(v　今天碰到一个gcc优化相关的问题,为了让一个页变成脏页(页表中dirty位被置上),需要执行下面这段代码:1uint32_t　*page;2//　...3page[0]　=　page[0];最后一行代码很有可能被gcc优化掉,因为这段代码看起来没有任何实际的作用。那么如何防止gcc对这段代码做优化呢?设置gcc编译时优化级别为-O0肯定是不合适的,这样对程序性能影响会比较大。stackoverflow上的Dietrich　Epp给出了一个强制类型转换的方案:1　PHP执行shell_exec("gcc　-lm　main.c　2>　error.txt")的时候不能编译出a.out文件,error.txt里的内容为“gcc:　error　trying　to　exec　'cc1':　execvp:　No　such　file　or　directory”。　在命令行里直接运行”gcc　-lm　main.c　2>　error.txt”不会报错,可以编译出a.out文件。　PHP代码如下```　```main.c代码如下```　#include　int　main(){　printf("Hello,World");　return　0;　}```error.txt内容如下```　gcc:　error　trying　to　exec　'cc1':　execvp:　No　such　file　or　directory```　Ubuntu交叉编译的应用程序在Qualcomm　9615　A5核的Linux系统下面无法运行,　出错信息如下　/usr/bin/qmi_ping_clnt_test_0000:　cd:　line　1　编译器如gcc,可以指定不同的优化参数,在某些条件下,有些函数可能会被优化掉。先写一个简单的测试文件:　cat　test.c　inline　void　foo(void){}用命令gcc　-g　-c　test.c编译成目标文件。用nm检查函数符号:$　nm　-C　test.o　00000000　T　foo现在使用　命令gcc　-g　-c　-O2　t　问题描述(为简化问题,设想的以下代码):有1个全局变量:int　a　=　0;2个线程:A线程负责对a进行写:while　(1) 　 　a++;B线程负责对a进行读:while(1){ 　 　if　(a%2)这里代码多,可能导致a不在寄存器里 　 　 　 　int　x　=　a/2; 　 　发在这个区说明算法层面上的优化我已经想不出来了,只能追求常数上的优化了。瓶颈就一个函数,我想问一下能有什么优化。　先给代码:　typedef　unsigned　long　long　uint64;　ui　em>gcc　编译优化标志说明 　 　 　 　在编译过程中我们经常会使用gcc及其相关的编译参数来编译源文件。编译Nginx编译debug版本使用的gcc　参数如下:pipe　 -O　-W　-Wall　-Wpointer-arith　-Wno-unused-paramete...　arm-linux-gnueabi-gcc:　error　trying　to　exec　‘cc1’:　execvp:　没有那个文件或目录因为我的系统是Linux　64位的,而以上运行的程序是32位的。解决办法,安装lib32ncurses5　lib32z1lib32stdc++6:soduapt-getinstalllib32z1sudoapt-getinst...　libexec/　gcc　/arm-linux-gnueabihf/4.7.3/cc1:　error　while　loading　shared　libraries:　libz.so.1:　cannot　o　这个可以看出来我们用的是64位的,但是里面提示是缺少32的zlib,我们只要安装32位的zlib就可以了解决办法:1、用 whereis　libz.so.1　 查找libz.so.1文件是否存在,我的查找结果是libz.so:　/lib64/libz.so.1　/usr/lib64/libz.so　 说明文件已经存在2、执行　su　-c　'yum　install　zlib.i68　本人初学Linux,现在想知道GCC编译器是安装在Linux哪个文件夹下啊?同时想知道Linux下,pid_t是什么数据类型,在哪里文件下可以找到pid_t的类型定义。。　谢了啊　!　make时遇到:　checking　for　suffix　of　object　files...　configure:　error:　in　`/home/binghe/gcc-4.7/gcc-4.7.1　最近在ubuntu12.04　编译android4.2源码时遇到一个编译错误,错误如下:　host　C++:　libhost　<=　build/libs/host/pseudolocalize.cpp　gcc编译个.c文件出错　就是这个start.c　gcc　-I　include/　-c　-fno-builtin　-o　kernel/start.o　kernel/start.c　这是error　l　android的工具链:error　trying　to　exec　'cc1':　execvp:　No　such　file　or　directory　修改#CC="$PREFIX/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/arm-linux-androideabi/bin/gcc"为CC="$PREFIX/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/bin/arm-linux-androideab　比如下面这个代码　#include　int　main()　{　while(1)　printf("循环");　printf("跳出");　return　0;　}　用GCC编译器编译以后　转载自:https://www.cnblogs.com/wgang171412/p/5404504.htmlc语言优化虽　然对于优化C代码有很多有效的指导方针,但是对于彻底地了解编译器和你工作的机器依然无法取代,通常,加快程序的速度也会加大代码量。这些增加的代码也会　影响一个程序的复杂度和可读性,这是不可接受的,比如你在一些小型的设备上编程,例如:移动设备、PDA……,这些有着严格的内存限...　C++编译后,如头文件,函数,类等,没有用到的话会被自动优化(删除)掉吗?　比如你把自己常用的东西全部写到一个头文件里。但程序只用了1个函数。那会全部打包到exe中吗?　如果会的话,除了手动删去没有用　just　as　the　title　CFLAGS　与CXXFLAGSCFLAGS　表示用于　C　编译器的选项,CXXFLAGS　表示用于　C++编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。大多数程序和库在编译时默认的优化级别是"2"(使用"-O2"选项)并且带有调试符号来编译,也就是　CFLAGS="-O2　-g",　CXXFLAGS=$CFLAGS。事实上,"-O2"已经启用绝大多数安全的优化选项了。另一方面,由gcc默认提供了5级优化选项的集合:-O0:无优化(默认)。-O和-O1:使用能减少目标文件大小以及执行时间并且不会使编译时间明显增加的优化。在编译大型程序的时候会显著增加编译时内存的使用和时间。-O2:　此选项将增加编译时间和目标文件的执行性能。包含-O1的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化。编译器不执行循环展开以及函数内联。-Os:专门优化目　这个错误是gcc和g++版本不兼容导致的,也有可能是安装完gcc没有安装g++首先安装gcc和g++及一些依赖包sudo　apt-get　install　build-essentialsudo　apt-get　install　g++安装完成后使用　gcc　-v　查看版本,然后使用g++　-v　查看版本,保证版本一致如果系统中安装有多个版本的gcc...　对Linux下的一个开源代码进行交叉编译,准备移植到Android平台上。但是一直报错。编辑脚本如下:export　NDKROOT="/home/bupt/android-ndk-r9d"export　PREBUILT=$NDKROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64export　SYSROOT=$NDKROOT/platforms/android-18/arch-armexport　CC=$PREBUILT/bin/arm-linux-androideabi-gccexport　LD=$PREBUILT/bin/arm-linux-androideabi-ldexport　AS=$PREBUILT/bin/arm-linux-androideabi-gccexport　AR=$PREBUILT/bin/arm-linux-androideabi-arexport　RANLIB=$PREBUILT/bin/arm-linux-androideabi-ranlibexport　STRIP=$PREBUILT/bin/arm-linux-androideabi-stripCFLAGS="--sysroot=$NDKROOT/platforms/android-18/arch-arm　-fPIC　-DX264_VERSION　-DANDROID　-DHAVE_PTHREAD　-D__ARM_ARCH_7__　-D__ARM_ARCH_7A__　-march=armv7-a　-fomit-frame-pointer　-mfloat-abi=softfp　-mfpu=neon　-I$TOOLCHAINS_INCLUDE　-I$NDKROOT/platforms/android-18/arch-arm/usr/include"export　CFLAGSLDFLAGS="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x　-Wl,-rpath-link=$NDKROOT/platforms/android-18/arch-arm/usr/lib　-L$NDKROOT/platforms/android-18/arch-arm/usr/lib　-nostdlib　-lc　-lm　-ldl　-lgcc"export　LDFLAGS./configure　--prefix=/home/bupt/clamav/clamav-0.98.4/clamav-android　--host=arm-linux-androideabi　--with-openssl=/usr/lib　config.log报错如下:configure:3820:　/home/bupt/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc　-V　>&5arm-linux-androideabi-gcc:　error:　unrecognized　option　'-V'arm-linux-androideabi-gcc:　fatal　error:　no　input　filescompilation　terminated.configure:3831:　$?　=　1configure:3820:　/home/bupt/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc　-qversion　>&5arm-linux-androideabi-gcc:　error:　unrecognized　option　'-qversion'arm-linux-androideabi-gcc:　fatal　error:　no　input　filescompilation　terminated.home/bupt/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/include-fixed/limits.h:169:61:　error:　no　include　path　in　which　to　search　for　limits.hconfigure:4461:　$?　=　1但是在这个文件夹下可以找到这个.h文件。conftest.c:13:0:　fatal　error:　assert.h:　No　such　file　or　directorycompilation　terminated.其他报错信息都是以上这种找不到头文件等。命令行报错为:configure:mempool　support　disabled　(mmap　not　available　or　not　usable)checking　for　ld　used　by　GCC...　/home/bupt/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ldchecking　if　the　linker　(/home/bupt/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld)　is　GNU　ld...　yeschecking　for　shared　library　run　path　origin...　donechecking　check.h　usability...　nochecking　check.h　presence...　nochecking　for　check.h...　noconfigure:　unable　to　compile/link　with　checkchecking　for　libxml2　installation...　not　foundconfigure:libxml2　support　unavailablechecking　for　OpenSSL　installation...　configure:　error:　OpenSSL　not　found.求解决方案!解压好了arm-linuxg-gcc　放到了$PATH路径下,　无论怎么执行都提示说:　no　such　file　or　directory,可明明有这个文件的.N遍之后,　执行了　file　arm-linux-gcc发现这个命令是32位的,　需要安装兼容包,于是apt-get　install　libc6:i386　libgcc1:i386　gcc-4.6-base:i386　lib　gcc　:　installation　problem,　cannot　exec　'cc1':　No　such　file　or　directory　我想在PC机器上先编译好,然后把编译后的文件放到arm板子上运行,可是现在出现问题:　要编译的文件:test_led.c　#include　#include　用android-ndk-r7b编译JNI程序,将拷贝过来的　external/e2fsprogs/lib/ext2fs/tdb.c:673:29:　warning:　comparison　between　:　In　function　'max2165_set_p　前几日刚刚在Ubuntu12上搭建好object-c环境,但是命途多舛呀!花费了很久时间才搭建好的环境但是却跑不了一个简单的helloworld,心累!编译时报了如下错误:gcc:error　trying　to　exec　'cc1obj':execvp:No　such　file　or　directory!原因:这个可能是你的gcc尚不支持cc1obj解决方法:必须要安装gobj　arm-eabi-gcc:　error　trying　to　exec　'cc1':　execvp:　No　such　file　or　directory总结一下:1、确认CROSS-COMPILE的目录在PATH里面2、确认cc1是存在的3、确认交叉编译工具的权限　编译　出错提示　error　trying　to　exec　'cc1':　execvp:　No　such　file　or　directory　在我的Ubuntu系统中,编译程序出现此提示。网上说法一大堆,或者编译器坏了,或者与其他软件冲突之类。似乎都不符合我的情况。于是自查,查询后获知其实我的编译器已经有了这个cc1,/usr/local/arm/4.4.1/libexec/gcc/arm-none　出现这种情况一般是没有将交叉编译工具链的路径添加到环境变量中解决办法:打开/etc/profile文件　将交叉编译工具链的路径添加进去,保存退出　然后执行　source　/etc/profile注意一定要是bin目录,如下图我的交叉编译工具链是在bin目录的下一级目录,如果不是写bin目录的话问题是不会解决的　...　murmurhash3　安装失败　:　gcc　:　error　trying　to　exec　'cc1plus':　execvp:　No　such　file　or　directory　搞spacy的安装,不得不安装murmurhash3。但是pip　install　spacy在我的centos上就会出现　: 　 　building　'murmurhash.mrmr'　extension 　 　creating　build/temp.linux-x86_64-3.7 　 　creating　build/temp.linux-x86_64-3.7/murmurhas...　转载:http://blog.csdn.net/rupert123456/article/details/6758124 gcc:　error　trying　to　exec　'cc1plus':　execvp:　没有该文件或目录　出错的时候要注意看信息提示,你的问题是没有　cc1pluc 表明你的系统缺少　g++　包。 解决方案:sudo　apt-get　install　g++　使用mdk编程,假如有一个有用的函数你定义了但是没有显式的调用,mdk在默认方式下,将会把这个函数从整个程序总删除掉,以节省ROM.比如,你在ROM的0x00002000处定位了一个函数,假设为void　test(void),然后使用函数指针来调用它:void　(*UserProgram)em>函数指针UserProgram　=　(void　(*)())　(0x00002000);//定位到指定的入口地址0x00002000　大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。