Centos环境下部署游戏服务器-编译
游戏服务器是在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环境下部署游戏服务器-编译的更多相关文章
- Centos环境下部署游戏服务器-软件安装
这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...
- Centos环境下部署游戏服务器-常用命令
图1 在Linux的世界,如果你不玩命令,那你见了同行都不好意思和人家打招呼.同时服务器正常状况下放在远端,一般都是开ssh登录服务器,相信远程桌面的人很少见吧.这篇文章说说Linu ...
- Centos环境下部署游戏服务器-自动化
计算机是没有智力的,只会接受指令,运行指令,得出结果.因此就算你让它重复做一件事多少次,它也学不会自动去做这件事.对于重复繁琐的事情,做为一个懒惰的程序员,必须告诉机器去做这件事情,然后就行了,而不是 ...
- Centos环境下部署游戏服务器-简介
一.前言 在接触这个操作系统之前我一直使用的是ubuntu和mac os,这次由于游戏是测试版本,没有专业的运维人员去做这件事情,只能我这个稍微懂一点linux的人来做这件事情了.由于涉及到 ...
- Centos环境下部署游戏服务器-权限
部署Web服务器的时候,在"DocumentRoot"指向的根目录新建一个文件夹,然后将网页和资源放在这个文件夹里,通过地址http://192.168.0.100/Res/ind ...
- Centos环境下部署游戏服务器-iptables
简介: 图1 Centos做为服务器级操作系统,防火墙是不可缺少的.防火墙的主要功能为控制进出网络包,防火墙就如小区门卫的工作职责,检查出入小区居民的身份,如果不符合小区门卫管理条例 ...
- Centos环境下部署游戏服务器-SVN
版本控制工具的文章已经被写滥了,所以本篇文章不想介绍如何安装Svn如何可视化操作这些东西.本篇文章讲述我自己对Svn的理解,以及在命令行下操作.为啥不应可视化界面?有两方面的原因,远程登录到服务器都是 ...
- Centos环境下部署游戏服务器-SSH
在这个*nix大行其道的年代,SSH绝对值得你拥有,虽说它的语法真的很简单,可用途相当大.比如说你在登山,突然公司一个电话告诉你服务器出问题了,在登山的过程中,肯定不能背个几公斤的笔记本吧,这个时候只 ...
- Centos环境下部署游戏服务器-Eclipse
一直在想这篇文章该不该写,因为这篇文章更像是教你如何使用一个ide这种文章,毫无价值可言.但思来想去还是应给写.上篇文章主要说了编译原理和过程,这篇文章就是理论联系实际的典范.并且很多工程师一辈子都不 ...
随机推荐
- 读:HIS 与医保系统的接入方案及实现
HIS 与医保系统的接入方案及实现刘剑锋 李刚荣第三军医大学西南医院信息科(重庆 400038) 医院HIS和医保系统的接口设计方案涉及两个部分,分别由医院和医保中心分别完成相,应的程序设计,这两部分 ...
- Java Day 14
多线程--线程间通信 对同一个资源进行处理,但是任务却不同 线程间通信--等待唤醒机制 1.wait(); 线程处于冻结状态,被wait线程存储在线程池中 2.notify(); 从线程池唤醒一个 ...
- 【转载】matlab中freqz函数的使用
freqz函数计算线性系统的频率响应,包括幅频响应和相频响应,基本输入为线性系统的AMMA模型系数向量,一个典型的AMMA模型为 % jw -j ...
- java 顺序表
想看看java版的数据结构,了解一下树的一些操作,写了个顺序表熟悉一下 package com.sqlist; /** * @author xiangfei * 定义一个顺序表 * */ public ...
- windows下将多个文件里面的内容合并成一个一个文件
如题:例如有多个章节的小说,现在要把他们合并成一个txt文件. 利用windows自带cmd工具: 一.拷贝合并1.将你的txt文档按照顺序分别命名为01.txt 02.txt 03.txt……2.将 ...
- html5之canvas练习
代码地址:github.com/peng666/blogs 在线地址:http://peng666.github.io/blogs/
- BCP command usage in SQL Server
The bcp Command-Line Utility You use the bcp (bulk copy program) tool to address the bulk movement o ...
- Python 删除列表中的重复数据
list0=['b','c', 'd','b','c','a','a'] 方法1:使用set() list1=sorted(set(list0),key=list0.index) # sorted o ...
- POSⅨ thread
POSⅨ thread 简称为pthread,Posix线程是一个POSⅨ标准线程.该标准定义 内部API创建和操纵线程. 编辑本段作用 线程库实行了POSIX线程标准通常称为pthreads.POS ...
- if in hlsl
seems that in HLSL_4, we can use if https://msdn.microsoft.com/en-us/library/bb313972(v=xnagamestudi ...