FlightGear编译小结
来源:互联网 发布:mac如何查找安装路径 编辑:程序博客网 时间:2024/06/16 06:31
养成写Blog的习惯,把平时遇到的一些有价值的事情记录下来,这并不是每个人都能做到的。由于推免没能推到自己第一想要的方向,退而求其次,我就来到嵌入式方向,并且毕业设计也在这边的实验室做,安排的任务跟计算机图形有关系,更具体一点跟飞行模拟器(Flight Simulator)有关系,这样就接触了FlightGear。编译FlightGear确实是一件费心的事情,下面记录一点跟编译过程有关的事项,注意要想成功编译FlightGear,只看我这个小结是万万不能的,因为与每个人选择的FlightGear、Simgear、OpenSceneGraph、3rdParty、plib、编译工具以及操作系统都有关系。
当决定要编译FlightGear时,第一件要做的事情是确定要编译的FlightGear是什么版本,然后决定别的依赖库采用什么版本。这里我选择FlightGear 1.9.1,需要使用Simgear 1.9.1来编译FlightGear 1.9.1,OpenSceneGraph的版本是2.8.1,plib的版本必须是1.8.5或者以上。当确定了这些以后,我们就需要知道这些依赖库放置在哪里才能使得编译FlightGear时能够找得到,此时可以参考网上的一些例子,但是更好的方法是打开FlightGear源代码里面的解决方案文件,例如我打开FlightGear 1.9.1源代码里面的FlightGear.sln(flightgear/projects/VC8):
就只有4个项目。右击FlightGear查看其属性->C/C++->常规,有一个附加包含目录:
看看这些值,就知道应该把依赖库的包含文件放在哪里。当然我们也可以改变这些值,然后再把包含文件放在相应改变后的位置,只要编译时找得到就OK。同时还有链接时的依赖库的lib文件的位置(属性->链接器->常规):
这样在出现问题时就不会担心是不是因为把相关文件放错位置了。
真正开始编译时,所谓的顺序其实就是先把相关包含文件和lib文件编译出来,这样在编译FlightGear 1.9.1时不会出现编译错误以及后面的生成阶段时不会出现链接错误。查看属性->链接器->输入:
FlightgearLib.lib
Simgear.lib
fnt.lib
js.lib
net.lib
psl.lib
puAux.lib
pui.lib
pw.lib
sg.lib
sl.lib
ul.lib
osgDBd.lib
osgGAd.lib
osgViewerd.lib
osgUtild.lib
osgParticled.lib
osgTextd.lib
osgd.lib
OpenThreadsd.lib
libjpeg.lib
pthreadvc2.lib
Alut.lib
openal32.lib
glu32.lib
opengl32.lib
winmm.lib
zlib.lib
wsock32.lib
advapi32.lib
comdlg32.lib
shell32.lib
user32.lib
我们一个任务是要凑集这些lib文件,这就是那些依赖的库。FlightGearLib.lib与Simgear.lib就是上面4个项目中其中二个项目做的事情。而fnt.lib到ul.lib的文件是属于plib的,所以就开始编译plib吧,版本是1.8.5。然后接下来以osg开头的以及OpenThreadsd.lib都是OpenSceneGraph的,后面都有一个d说明是debug版本,没有d是release版本,然后是libjpeg.lib,这是需要单独编译的,不过如果不怕也可以直接从网上搜索下载,pthreadvc2.lib也是如此,我就是直接从网上搜索下载回来的,alut.lib、openal32.lib、opengl32.lib、zlib.lib也是需要专门编译,都是相互独立的库。编译链接时需要这些就够了,但是如果要能够运行起来,还需要path指向相关的dll文件,这些文件是编译相关库产生的,把路径追加到PATH变量就好了。
最后编译FlightGear时,有一个事项要阐述一下。就是工程里面有些文件在磁盘上是不存在的,此时就会报c1xx错误,消除这些错误就是在工程里面把相关文件删除,然后链接时就有许多的”找不到符号”的错误,这是因为磁盘上有该文件,只是没有加到工程里面来,所以就根据符号找到定义它的文件,然后加到工程里面来,最后需要忽略msvcrt.lib、libcmt.lib这两个库文件,到这里你就可以飞起来了。
希望给编译FlightGear的朋友们一点帮助。如有疑惑,欢迎交流,倘有错误之外,恳请指正。
胡靖飞
- FlightGear编译小结
- FlightGear编译
- FlightGear的IO系统
- 飞机模拟flightgear
- 编译小结
- GStreamer编译小结
- 条件编译小结
- 2.6内核编译小结
- 条件编译小结
- Android编译顺序小结
- PB编译顺序小结
- WebKit编译小结
- opencv2.2编译小结
- web kit 编译小结
- Linux内核编译小结
- android编译小结
- 编译原理作业小结
- MTK Android 编译小结
- NeBeans模块中关闭TopComponent之后资源无法释放问题
- 利用全局钩子简单实现键盘锁定/解锁
- Dom4J使用XPath功能注意事项
- EJB3之JPA程序结构,完美的异常处理
- P2P协议数据识别(转载)
- FlightGear编译小结
- 工欲善其事必先利其器之javaweb开发工具
- 学习IT专业的人该何去何从?
- drawRoundRect抗锯齿的的方法
- 使用 Qt 批量选取指定类型文件源代码
- C3P0使用前后比较
- Jboss下虚拟域名和访问路径设置
- 今晚的福利彩票的中奖号码是
- 可自动恢复的JMS消息收发类,完美处理异常