游戏服务器是在windows环境开发的,相关跨平台的东西在这里不谈了,只谈如何将Visual Studio 工程转换到Linux下编译。这里涉及到的软件分别为:Centos版本为6.4,Visual Studio 2008,Eclipse cdt。

为了后面的知识容易理解,先简单说下C++编译原理,有四个过程。

1、预处理,通过预处理器(cpp)将宏展开,同时插入include包含的头文件

     $cpp test.cc >test.i

2、编译,将预处理文件编译成汇编文件

     $gcc -s test.i

3、汇编,将汇编代码转换成机器码

     $as -o test.o test.s

4、链接, 链接器将机器码和库文件生成可执行文件。

     $ld -o test test.o

     这个是整个编译过程,只不过在ide环境下,你只需要摁一下F5程序就自动启动了。但后面的细节又有几个人知道呢?由于我所在的项目工程文件非常大,这里提醒下大家尽量少用Visual Studio的虚拟目录。在你构建工程的时候确实用的很高兴。但是用gcc去编译的时候,痛苦不堪,自动生成makefile是根据当前目录CC文件生成makefile的。如果引用外部文件的话,如果在工程里一处引用那也好,可我们工程里一个文件夹,几处引用,并且还要排除掉不用的CC文件,这就需要一个个目录去查看那里引用,把没引用的排除出去。

     上面的编译只是最简单编译单个文件的过程,一个大型项目肯定没这么简单,比如会依赖第三方库,thread,mysql,cryopt,json。。。,还有编译优化级别,是否调试版本。这些对应vs里都有相应可视化配置的地方。但如果你不理解整个编译过程,很容易有遗漏的过程,同时换个新的ide你会很迷茫,这个软件如何下手。但是如果你在gcc下编译个比较大的项目,或者自己写过比较复杂的makefile,无论软件换成啥样,你只要简单看下文档,很快就会对这种ide上手,因为你知道需要添加什么,只要找到地方就可以了。

     这里再看一下gcc几个简单的参数:

     gcc -I/include  -O2 -Wall -g test test.cc -L/lib -lpthread

     1、-I 去相应目录查找头文件

     2、-O2 优化级别为2,对应release版本的优化级别

     3、-Wall 输出所有警告信息

     4、-g 生成gdb可调式执行文件

     5、-L 去对应目录搜索库文件(a 或 so 文件)

     6、-l 包含的库文件

     明白了这些参数的含义,以及编译过程,剩下的事情就是在eclipse里实战了。下篇文章讲述,eclipse编译vs工程的过程和技巧。 

参考:http://www.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

Centos环境下部署游戏服务器-编译的更多相关文章

  1. Centos环境下部署游戏服务器-软件安装

    这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...

  2. Centos环境下部署游戏服务器-常用命令

         图1     在Linux的世界,如果你不玩命令,那你见了同行都不好意思和人家打招呼.同时服务器正常状况下放在远端,一般都是开ssh登录服务器,相信远程桌面的人很少见吧.这篇文章说说Linu ...

  3. Centos环境下部署游戏服务器-自动化

    计算机是没有智力的,只会接受指令,运行指令,得出结果.因此就算你让它重复做一件事多少次,它也学不会自动去做这件事.对于重复繁琐的事情,做为一个懒惰的程序员,必须告诉机器去做这件事情,然后就行了,而不是 ...

  4. Centos环境下部署游戏服务器-简介

    一.前言      在接触这个操作系统之前我一直使用的是ubuntu和mac os,这次由于游戏是测试版本,没有专业的运维人员去做这件事情,只能我这个稍微懂一点linux的人来做这件事情了.由于涉及到 ...

  5. Centos环境下部署游戏服务器-权限

    部署Web服务器的时候,在"DocumentRoot"指向的根目录新建一个文件夹,然后将网页和资源放在这个文件夹里,通过地址http://192.168.0.100/Res/ind ...

  6. Centos环境下部署游戏服务器-iptables

    简介:   图1        Centos做为服务器级操作系统,防火墙是不可缺少的.防火墙的主要功能为控制进出网络包,防火墙就如小区门卫的工作职责,检查出入小区居民的身份,如果不符合小区门卫管理条例 ...

  7. Centos环境下部署游戏服务器-SVN

    版本控制工具的文章已经被写滥了,所以本篇文章不想介绍如何安装Svn如何可视化操作这些东西.本篇文章讲述我自己对Svn的理解,以及在命令行下操作.为啥不应可视化界面?有两方面的原因,远程登录到服务器都是 ...

  8. Centos环境下部署游戏服务器-SSH

    在这个*nix大行其道的年代,SSH绝对值得你拥有,虽说它的语法真的很简单,可用途相当大.比如说你在登山,突然公司一个电话告诉你服务器出问题了,在登山的过程中,肯定不能背个几公斤的笔记本吧,这个时候只 ...

  9. Centos环境下部署游戏服务器-Eclipse

    一直在想这篇文章该不该写,因为这篇文章更像是教你如何使用一个ide这种文章,毫无价值可言.但思来想去还是应给写.上篇文章主要说了编译原理和过程,这篇文章就是理论联系实际的典范.并且很多工程师一辈子都不 ...

随机推荐

  1. 一个关于C#中基类与接口混合继承的疑问总结

    思路参照 http://www.cnblogs.com/allenlooplee/archive/2004/11/16/64553.html,对原文进行了简化和补充,感谢原作者. 问题很简单,如下所示 ...

  2. NET Core静态文件的缓存方式

    NET Core静态文件的缓存方式 阅读目录 一.前言 二.StaticFileMiddleware 三.ASP.NET Core与CDN? 四.写在最后 回到目录 一.前言 我们在优化Web服务的时 ...

  3. 如何在Report Builder中使用fnd_profile.value

    在EBS的Report开发中,需要根据客户化的一个Profile来控制用户可以访问的数据,可是在开发的过程中发现一直取不到该Profile的值,后来百度才找到了原因. 解决方法: 1.添加用户参数p_ ...

  4. C++中的set和java的hashset有何区别?

    以前对C++的STL容器烂熟于心,两年没碰过C++了,现在已经很生疏了.工作原因转战java,对java的容器不甚了解,特别是每看到一种容器,不由自主地拿起和C++对比.C++中的set和java的h ...

  5. android sdk manager下载慢可以使用代理信息

    mirrors.neusoft.edu.cn  80

  6. 《Soft Skill》一书中的好句子

    The biggest mistake that you can make is to believe that you are working for somebody else. Job secu ...

  7. css中的border还可以这样玩

    在看这篇文章之前你可能会觉得border只是简单的绘制边框,看了这篇文章,我相信你也会跟我一样说一句"我靠,原来css中的border还可以这样玩".这篇文章主要是很早以前看了别人 ...

  8. Promises与Javascript异步编程

    Promises与Javascript异步编程 转载:http://www.zawaliang.com/2013/08/399.html 在如今都追求用户体验的时代,Ajax应用真的是无所不在.加上这 ...

  9. 【IDA*】codevs 2495:水叮当的舞步

    2495 水叮当的舞步 题目描述 Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变. 为了讨好她的偶像虹猫,水叮当决定在地毯上 ...

  10. Swift-4-数组和字典

    // Playground - noun: a place where people can play import UIKit // 数组 字典 // 集合的可变性 赋值给var的集合是可变的mut ...