由于C++是一门非跨平台语言,其开发的程序编译生成的可执行文件,只能在相应的操作系统中被执行,离开此系统环境将无法执行。

主要原因是不同的操作系统,可执行文件的结构不同,最为常见的操作系统是有:MAC,windows,linux,unix。。。。

其中windows下为早期为DOS结构,之后随着窗口系统的发展改为PE,而linux,以及unix其可执行文件结构为elf。

本文只是刚开始,很多东西都不熟悉,因此在后续的过程中会对开发环境篇进行进一步详细说明和扩展,争取以后大多数的平台,以及该平台下常用的C++工具都会用。

本文主要讲了四方面内容:

C++与java开发环境的不同,

标准C++学习过程,

C++开发和应用方向,

C++开发的一般思路,

C++开发环境搭建。

==================================================================================

C++与java开发环境的不同

可以说,虽然不同操作系统下,可执行文件结构不同,但是从可执行文件生成,到被加载到内存,然后在内存中布局来看,其一般过程是相似的。

因此,在学习C++等非跨平台语言时,最好先有一个高层面的编程,然后针对不同的操作系统,有不同的开发和编译环境。如果与java进行比较如下:

开发语言    是否跨平台                linux下编译器+连接器                  windows下编译器+连接器

C++            非                       gcc,g++等,很多                           IDE是有TC,dev,其中最好的是VS,

java            是                linux版jdk,唯一,存在不同版本                windows版jdk,唯一,存在不同版本,IDE有eclipse,netbean等

上面只写了两个平台下的环境常见的,其实还有很多,限于本人知识有限无法一一列举。

不过,这里就个人而言,学习C++开发与应用,在windows下不选VS就是在装B,因为这是微软自己出的,还能有比他更好的?那就是在扯蛋。(跑题了)

而linux下可用IDE,也可用vim之类的。

===============================================================================

标准C++学习过程

学习的顺序最好是:

1)先在linux下用vim之类学习标准C++语法,这样书上怎么写,代码就是什么样的。

2)理解C++程序的编译和连接过程,

3)标准库的使用。

4)预定义(宏定义,文件引入。。。)

5)C++程序内存布局结构

6)生成可执行文件静态结构分析

7)程序从磁盘加载到内存开始,整个运行过程,以及最后被清理出内存,整个运行生命周期情况。

=============================================================================

C++开发和应用方向

当将标准C++语言学完,并明确理解以上7个问题后,可以开始进行编程方向的选择。

主要有以下几个方向:

1)系统编程

2)应用编程

3)网络编程

4)嵌入式开发

5)android底层和中间件开发

6)驱动开发

7)游戏工具开发

选择一个自己喜欢的方向,努力继续学习下去。

这个时候需要对操作系统和计算机组成原理有相对高的知识和原理层面的要求,因此需要花时间去补充相应的知识点。

==============================================================================

C++开发的一般思路

接到一个需求或是问题,应该是

1)提出解决方案或是设计出来

2)通过定义标准C++相关的接口,以验证需求。

3)对应完成程序要运行的平台,选择相应的IDE工具,基于平台的SDK工具,调用其中适合的API来实现接口,最终实现需求。

==============================================================================

C++开发环境搭建

在window下,xp及以下,最高为VS2010,win7可安装VS2012,要开发win8应用,最好是安装2012及以上VS

安装方法:直接安提示next即可实现。

在linux下,由于linux只是一类具有linux内核的系统的统称,具体有很多版本,随着发现不同版本之间出现相应的差异,但大部分的命令还是相同或相似的。

这里仅以centos,ubuntu两个版本来说明C++编辑,编译,连接,执行过程。

1)都天然自带gcc,g++,所以基本不用装了,最多需要更新下库版本,但标准库基本无变化,更新的多是系统或系统应用相关的库

2)编辑,命令行下:vim(vim的使用以后再说)

3)编译+连接,当前的编译器都是将连接器整合在一起的,因此,一行命令仅仅需要通过不同的参数来判断是只编译还是编译连接一起做了。

命令:g++ hello.cpp -o hello 或者  g++ -o hello hello.cpp

以上源文件和输出文件顺序无影响

4)执行,在当前目录下:  ./hello 回车即可

如下图为vim编辑源文件:

下图为编译源文件,执行生成可执行文件:

===============================================================================

C++学习之开发环境搭建篇(一)的更多相关文章

  1. Zend Framework学习日记(1)--环境搭建篇(转)

    Zend Framework学习日记(1)--环境搭建篇 (1)开发工具 Zend Framework框架:http://framework.zend.com/download/latest 包含2个 ...

  2. Android开发环境搭建篇详尽的教程实例汇

    原文链接:http://android.eoe.cn/topic/android_sdk 一.android开发环境搭建图文教程整理篇: 1.Android开发环境搭建全程演示(jdk+eclip+a ...

  3. 如何学习web开发环境搭建和脚手架

    Web前端的学习路线 第一阶段: HTML+CSS: HTML进阶.CSS进阶.div+css布局.HTML+css整站开发. JavaScript基础: Js基础教程.js内置对象常用方法.常见DO ...

  4. 我的Java学习笔记 -开发环境搭建

    开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...

  5. Django学习笔记 开发环境搭建

    为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统a ...

  6. 一步步学习Linux开发环境搭建与使用

    00.Linux开发环境搭建与使用1--Linux简史 01.Linux开发环境搭建与使用2--Linux系统(ubuntu)安装方案 02.Linux开发环境搭建与使用3--通过虚拟机安装系统(ub ...

  7. ES6 - 基础学习(1): 开发环境搭建

    现在Chrome浏览器已经很好的支持ES6了,但有些低版本的浏览器或其他浏览器还是不支持ES6的语法,因此实际项目开发或上线过程中就需要把ES6的语法转变成ES5的语法.项目开发过程中 Webpack ...

  8. 一步一步构建手机WebApp开发——环境搭建篇

    从2007年,乔布斯带来了第一代Iphone手机,整个移动互联网发生天翻地覆的变化,也同时证明了乔布斯的一句名言:“再一次改变世界”. 在当今的移动互联网,手机App居多,很多App对移动设备的要求也 ...

  9. 20140613_JavaWeb学习之开发环境配置篇

    本文所使用软件百度云盘网址:http://pan.baidu.com/s/1kTDRFwz 1安装JDK 操作系统:windows7-64bit 版本号:jdk-7u51-windows-x64 安装 ...

随机推荐

  1. Python for循环内部实现的一个sample

    #!/usr/bin/env python # -*- coding: utf-8 -*- it = iter([1,2,3,4,5]) while True: try: x = next(it) p ...

  2. .NET Core创建一个控制台(Console)程序

    .NET Core版本:1.0.0-rc2 Visual Studio版本:Microsoft Visual Studio Community 2015 Update 2 开发及运行平台:Window ...

  3. Orchard源码:Logging

    试着用markdown写些东西.貌似博客园支持的还有问题,代码片段显示错位,还得另外上传图片.还是用普通方法写写随笔好了. Logging相对也是比较松耦合的模块,可以随时提取出来用在自己的项目中.其 ...

  4. 用Path来绘制一些图形

    Path是android中用来封装几何学路径的一个类,因为Path在图形绘制上占的比重还是相当大的.你可以用它来绘制各种样式的几何图形,做图表什么的都可以. 一.画线段 1.1 lineT(float ...

  5. UWP开发-重新理解MVVM

    MVVM是一个比较热门的开发框架,尽管已经出现很久了,仍然比较受欢迎.MVVM框架包括: M:Model:Model指的是数据模型,例如你要在页面展示联系人信息,那么Model就是联系人的模型,包括联 ...

  6. IOS 图片轮播实现原理 (三图)

    IOS 图片轮播实现原理的一种 图片轮播所要实现的是在一个显示区域内通过滑动来展示不同的图片. 当图片较少时我们可以采用在滚动视图上添加很多张图片来实现. 但是如果图片数量较多时,一次性加载过多图片会 ...

  7. iOS开发--隐藏(去除)导航栏底部横线

    iOS开发大部分情况下会使用到导航栏,由于我司的app导航栏需要与下面紧挨着的窗口颜色一致,导航栏底部的横线就会影响这个美观,LZ使用了以下方法.觉得不错,分享来给小伙伴们. 1)声明UIImageV ...

  8. C语言-07-预处理、typedef、static和extern

    预处理 1> 使用注意 以#开头 在代码被翻译成0和1之前执行 预处理指令可以出现在任何位置 作用域是从编写指令那一行开始到文件结束 2> 宏定义 基本使用 ① 使用#define定义 ② ...

  9. Validation of viewstate MAC failed. 解决方法

    前段时间公司为了减轻服务器压力,对网页做了集群,分布在多台服务器,通过DNS轮回解析到各台服务器,结果页面只要打开停留到DNS解析到下一个地址,就会出现出下错误信息. Validation of vi ...

  10. mysql高可用之DRBD + HEARTBEAT + MYSQL

    1. 架构 Mysql: master<=slave 10.24.6.4:3306<=10.24.6.6:3306 VIP: 10.24.6.20 必须使得VIP和mysql处于同一网段, ...