最近项目使用的C++的版本到C++11了,但是由于有些静态库(.a)没有源码,因此链接时还在使用非C++11版本的库文件.目前跑了几天,似乎是没出什么问题,但是我还是想说一下这样做有哪些潜在的风险. 首先需要说明的是,升级到C++11之后,部分std的数据结构的内存布局有可能发生改变(待考究).最开始,我认为只要静态库暴露出来的接口没有使用这些不兼容的数据结构即可.也就是说,如果静态库暴露的所有接口都是纯C风格的,没有使用任何C++ std的数据结构,则链接这种静态库应该是安全的.但是后来发现似…
作者:朱金灿 来源:http://blog.csdn.net/clever101 早上用codeblocks编译一个c文件,出现这样一个编译错误: +'for'+loop+initial+declarations+are+only+allowed+in+C99+mode 原来codeblocks的gcc默认不以c99标准编译c文件,需要设置一下,具体如下: 1. 在Settings菜单栏下找到Compiler-菜单项,如下图: 2.在Global compiler setting中选择Compi…
如果用命令 g++ -g -Wall main.cpp  编译以下代码 : /* file : main.cpp */ #include <stdio.h> int main() { int a[5] = { 1, 2, 2, 5, 1 }; for( int i:a ) { printf( "%d\n", a[i] ); } return 0; } 那么g++ 就会提示以下错误: main.cpp: In function ‘int main()’: main.cpp:5…
 如果用命令 g++ -g -Wall main.cpp  编译以下代码 : 1 2 3 4 5 6 7 8 9 10 11 12 /*     file : main.cpp */ #include <stdio.h>   int main() {     int a[5] = { 1, 2, 2, 5, 1 };     for( int i:a ) {         printf( "%d\n", a[i] );     }     return 0; } 那么g+…
g++ -g -Wall -std=c++11 main.cpp gcc -g -Wall -std=c11 main.cpp 如果不想每次写这个-std=C++11这个选项该怎么办呢? 方法出处:http://stackoverflow.com/questions/16886591/how-do-i-enable-c11-in-gcc 方法1:写Makefile 方法2:取别名 :alias g++11="g++ -std=c++11" -----------------------…
  ./configure --prefix=安装目录 这里注意,安装目录可以自己选择地方,但是自己选择地方的话就要把编译出的bin.include.lib三个文件夹分别加入XXX XXX XXX三个环境变量中 如果不自己指定,系统默认采用--prefix=/usr/local,但是不是所有的linux的系统都默认把/usr/local中的bin.include.lib加入到了XXX XXX XXX环境变量中 因此,更加科学的方法是指定–prefix=/usr,因为/usr中的bin.inclu…
为什么要编译安装?因为根据需求可以个性化定制功能. 关键是阅读cmakelist,看都有哪些依赖,都有哪些选项可用,哪些选项是自己可以配置的. 一般流程: mkdir build cd build cmake -D CMAKE_INSTALL_PREFIX=安装目录 .. make make install…
命令格式:./maketek [option] [project] [action] [modules]Option:   -t ,-tee :输出log信息到当前终端   -o , -opt=-- : 编译附加条件,一般使用-opt=TARGET_BUILD_VARIANT=user来编译用户板软件   -h ,help : 打印帮助信息并退出Project : 工程名,例如:basicom72_wet_jb3 Action : n , new : 重新编译整个工程c , clean:清理编译…
gcc和g++现在是gnu中最主要和最流行的c&c++编译器.g++是c++的命令,以.cpp为主:对于c语言后缀名一般为.c,这时候命令换做gcc即可.编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接. gcc和g++都是GNU(组织)的一个编译器.但两者有一些区别:后缀为.c的文件gcc把它当做c程序,g++当做c++程序.后缀为c++的两者都当做c++程序.对于cpp程序,无论gcc或者是g++编译阶段都是相同的,都是用的gcc进行编译,但是在链接阶段gcc不能自动和c…
首先看一下配置后的效果: 1.直接在底部文本框中显示运行结果(不需要从键盘输入的时候使用): 2.在cmd中运行结果(需要从键盘输入的时候使用): 快捷键说明: 运行: 在底部文本栏显示结果:Ctrl + , 在cmd窗口中显示结果:Ctrl + . C: 编译:Ctrl + Shift + B 编译并运行(在底部文本栏显示结果):Ctrl + Shift + , 编译并运行(在cmd窗口中显示结果):Ctrl + Shift + . C++: 编译:Ctrl + B 编译并运行(在底部文本栏显…
centos 7 结构体gcc 32位编译环境 1介绍 1.1背景 学习新 C++ 2011和C11标准. 1.2使用软件 CentOS 7(Linux version 3.10.0-123.el7.x86_64) gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) 1.3本次配置 32位gcc 开发环境. 由于 RHEL 7(红帽企业版 linux 7)已经不再提供32位版本号,短期内 CentOS 7也不会提供32位的版本号,故为了考虑升级和研究可用的…
编译简介 在谈到JIT前,还是需要对编译过程有一些简单的了解. 在编译原理中,把源代码翻译成机器指令,一般要经过以下几个重要步骤: 什么是JIT1.动态编译(dynamic compilation)指的是“在运行时进行编译”:与之相对的是事前编译(ahead-of-time compilation,简称AOT),也叫静态编译(static compilation). 2.JIT编译(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译…
郑重声明:本片博客是学习<深入理解java虚拟机>一书所记录的笔记,内容基本为书中知识. Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为"热点代码",为了提高热点代码的执行效率,在运行时, 虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器,即时编译器编译性能的好坏. 代码优化程度的高低却是衡量一款商用虚拟机优秀与否的最关键的指标…
模块以Email为例: 1.执行build目录下的脚本文件envsetup.sh $ source ./build/envsetup.sh 2.选择版本(user为用户版本   eng为工程版本) $ lunch You're building on Linux Lunch menu... pick a combo:      1. aosp_flounder-userdebug      2. mini_emulator_mips-userdebug      3. mini_emulator…
单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: /* helloworld.cpp */ #include <iostream> int main(int argc,char *argv[]) { std::cout << "hello, world" << std::endl; ); } 程序使用定义在头文件 iostream 中的 cout,向标准输出写入一个简单的字符串.该代码可…
刚写的一个自动编译.混淆.打包jar的代码,做个记录 用到的NuGet: <?xml version="1.0" encoding="utf-8"?> <packages> <package id="DotNetZip" version="1.10.1" targetFramework="net45" /> <package id="Newtonsoft.…
近期我们都在讨论build系统,我们看了一些技巧能够让你的Maven build更快. 结论和反映都势不可挡.由于我们提供的技巧,很多其它的人都非常高兴能加快他们完毕自己的项目.如今,让我们看一下怎么处理gradle编译项目. 编译的项目一般都是标准编译的,也都是独一无二的.差点儿全部的项目都添加了其自身的复杂性. 全部的东西都不同可是有一个东西是相同的:编译会占用你的时间,加快编译会影响你的开发效率,让你的项目工作更加顺畅. 事不宜迟,让我们来看看什么是Gradle.和它的理念: 加速Grad…
首先看一下配置后的效果: 1.直接在底部文本框中显示运行结果(不需要从键盘输入的时候使用): 2.在cmd中运行结果(需要从键盘输入的时候使用): 快捷键说明: 运行: 在底部文本栏显示结果:Ctrl + , 在cmd窗口中显示结果:Ctrl + . C: 编译:Ctrl + Shift + B 编译并运行(在底部文本栏显示结果):Ctrl + Shift + , 编译并运行(在cmd窗口中显示结果):Ctrl + Shift + . C++: 编译:Ctrl + B 编译并运行(在底部文本栏显…
今天是中秋佳节,但是写完已经是第二天凌晨了,还是祝大家中秋快乐! VS对C++的支持相较GCC太弱了,连续几个VS版本对C++的改进都很小.很少.对Cpper也许是一种痛,我们也许希望能使用VS的强大编辑功能,组合GCC以及GDB的强大编译器以及调试功能进行开发.自从有了VisualGDB,这一切都变成真的了,那VS默认会有预编译头,GCC呢?VisualGDB呢?我们只能手动去写Makefile,不错,手动去写,下面就与大家分享VisualGDB中的预编译头设置. 在之前的博客(VisualG…
从http://www.freetype.org下载源代码. FreeType2库源码包中包含多种环境与编译器下的make文件,其中还包含vc的项目文件. 我用的是VC,所以首先找到VC环境的项目文件.该文件在 /builder/win32/visualc目录下面,该目录包含vc6与vs2005的项目文件.不过好像它的vc6版本的项目文件有点问题,我用vc6是不能正确打开的,不过vs2005可以很好的工作.打开vs2005的项目进行编译就可以了,没有错误的放就会在/objs目录下产生相应的lib…
C++标准库 C++标准库包含如下内容: C++标准编译工具链 C++扩展编译工具链(各种C++编译器独有) C++标准库 C++库 C库 C兼容库(为了兼容能够用C编译器编译的项目,直接使用C++也能编译) C++扩展库(各种C++编译器独有) C++标准库都在std名称空间中 C库和C兼容库的内容其实完全相同,只是头文件的名称不同,因为C++设计之初就是为了完全兼容C C库 C兼容库 cstdio stdio.h cmath math.h 以c字母开头 后缀是.h…
1. 内置指令(10-12 章) AngularJS 内置超过 50 个内置指令, 包括 数据绑定,表单验证,模板生成,时间处理 和 HTML 操作. 指令暴露了 AngularJS 的核心功能, 如 事件处理,表单验证,模板等. 1.1 数据绑定指令 数据绑定: 使用模型中的值, 并将其插入到 HTML 文档中.所有的数据绑定指令, 都可以当做一个属性或者类使用. 属性 : <span ng-bind="todos.length"></span> 属性可能会导…
目录 1       概述.... 5 1.1      目标:.... 5 1.2      原则:.... 5 2       Java编程命名规范.... 5 2.1      包的命名标准.... 6 2.1.1命名包.... 6 2.2      类.接口的命名标准.... 6 2.2.1         命名类.... 6 2.2.2         命名接口.... 6 2.2.3         命名编译单元.... 6 2.3      成员函数命名标准.... 7 2.3.1…
提问的智慧 How To Ask Questions The Smart Way Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen 本指南英文版版权为 Eric S. Raymond, Rick Moen 所有. 原文网址:http://www.catb.org/~esr/faqs/smart-questions.html Copyleft 2001 by D.H.Grand(nOBODY/Ginux), 2010 by Gasolin,…
原文版本历史 目录 声明 简介 在提问之前 当你提问时 慎选提问的论坛 Stack Overflow 网站和 IRC 论坛 第二步,使用项目邮件列表 使用有意义且描述明确的标题 使问题容易回复 用清晰.正确.精准并合法语法的语句 使用易于读取且标准的文件格式发送问题 精确的描述问题并言之有物 话不在多而在精 别动辄声称找到 Bug 可以低声下气,但还是要先做功课 描述问题症状而非猜测 按发生时间先后列出问题症状 描述目标而不是过程 别要求使用私人电邮回复 清楚明确的表达你的问题以及需求 询问有关…
转载 https://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/ JIT 编译器在运行程序时有两种编译模式可以选择,并且其会在运行时决定使用哪一种以达到最优性能.这两种编译模式的命名源自于命令行参数(eg: -client 或者 -server).JVM Server 模式与 client 模式启动,最主要的差别在于:-server 模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升.原因是:当虚拟机运行在-client…
导语 GCC(GNU Compiler Collection,GNU 编译器套件) 是由 GNU 开发的编程语言编译器,支持C.C++.Objective-C.Fortran.Java.Ada和Go语言等多种预言的前端,以及这些语言的库(如libstdc++.libgcj等等),它是以 GLP 许可证所发行的自由软件,也是 GNU 计划的关键部分.GCC 原本作为GNU操作系统的官方编译器,现已被大多数类 Unix 操作系统(如Linux.BSD.Mac OS X 等)采纳为标准的编译器,GCC…
提问的智慧 How To Ask Questions The Smart Way Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen 本指南英文版版权为 Eric S. Raymond, Rick Moen 所有. 原文网址:http://www.catb.org/~esr/faqs/smart-questions.html Copyleft 2001 by D.H.Grand(nOBODY/Ginux), 2010 by Gasolin,…
1. 介绍 一般一个程序在内存中可以大体划分为三部分——静态内存(局部的static对象.类static数据成员以及所有定义在函数或者类之外的变量).栈内存(保存和定义在函数或者类内部的变量)和动态内存(实质上这块内存池就是堆,通常通过new/malloc操作申请的内存).对于静态内存和栈内存来说,编译器可以根据它们的定义去自动创建和销毁的相应的内存空间.而对于动态内存,由于程序只有在运行时才知道需要分配多少内存空间,所以只能由程序员去动态的去创建和回收这块内存. 而对于动态内存的回收是一个很复…
几乎每隔一个星期,就有一个新的 JavaScript 库席卷网络社区!Web 社区日益活跃.多样,并在多个领域快速成长.想要研究每一个重要的 JavaScript 框架和库,是个不可能完成的任务.接下来,我会分享一些前端开发的最著名和最有影响力的框架和库.下面,就让我们一起来看看,顶级的 JavaScript web 前端框架.库和工具及其使用. 请注意: 如果没有包括你最喜欢的 JavaScript 的框架和库,请多包涵. 请实时更新你的框架和库,最新版本往往有更好的跨浏览器和跨设备支持.可以…