养成写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编译小结相关推荐

  1. Windows10 + VS2015 (Win SDK10)环境下的64位 VTK编译小结

    之前在学习vtk过程中,感觉vtk的编译还是很简单的,基本上不会碰到什么棘手的错误.但是,当我在Win10+VS2015这个环境下配置时,却遇到了麻烦.经过一番折腾之后,终于将vtkbian编译成功了 ...

  2. WebKit编译小结

    在Windows平台上利用微软的VS编译WebKit,然后在VS IDE里设置断点跟踪WebKit的运行,是一件很好玩的事情.到目前为止,我们至少可以通过两个开源项目来做这件事情:Apple的WebK ...

  3. Windows10 + VS2015 环境下对gdal2.0.1进行64bit编译小结

    这是官方给出的编译指导,但是在实践过程中有几点仍然需要特别注意. Tip 1:不要使用默认的"VS开发人员命令提示"工具,使用该工具会遭遇如下的错误: 正在创建库 gdal_i.l ...

  4. Android编译小结(新建android项目)

    点击打开链接 正式开始一个新的平台,以前的项目拿到的代码都是供应商改好的,感觉有很多不规范的地方. 这次从一个全新的项目着手,严格按照android规范进行项目的添加.板级文件的支持.目标是争取不改动 ...

  5. linux内核编译感想,Linux内核编译小结

    初步了解Linux编译内核: Linux默认内核存放路径为/boot Linux内核的版本号: LINUX采用双树系统:一为稳定树,二为开发树.一般是新特性及实验性改进首先在开发树中进行,经过测试后, ...

  6. catkin tools/make 编译小结

    一.catkin tools 安装  sudo apt-get install python-catkin-tools catkin build    -BuildPackages catkin cl ...

  7. 5单个编译总会编译全部_5分钟读懂JavaScript预编译

    大家都知道JavaScript是解释型语言,既然是解释型语言,就是编译一行,执行一行,那又何来预编译一说呢?脚本执行js引擎都做了什么呢?今天我们就来看看吧. 1-JavaScript运行三部曲 语法 ...

  8. Mac 平台 Android FFmpeg 编译与集成实践

    文章目录 FFmpeg 是什么 为什么要学 FFmpeg 开发 FFmpeg 编译 1. 编译环境准备 2. FFmpeg 环境配置 3. 完整的脚本 4. FQA 编译小结 在Android Stu ...

  9. 定制化ROM采坑之路(1):魔趣8.1版本源码下载和编译过程

    前言 记得当年刚接触Android的时候,就看有关老罗的文章倒是让我的安卓内功提升不少,但是由于工作都是停留在应用层的缘故,我几乎对这块并没有深入研究,最近公司的新产品对Framework层的开发有所 ...

最新文章

  1. Android Studio Day03-1(Android studio 系统界面简介)
  2. 计算机书籍-老年人编程自学书籍
  3. 推荐系统算法_机器学习和推荐系统(二)推荐算法简介
  4. php贺卡生成,用php与mysql的电子贺卡程序
  5. windows 批处理bat,设置定时关机
  6. MathType中的一些精彩技巧
  7. Nhibernate 3.0 cookbook学习笔记 创建事务自动包裹的访问层
  8. linux java usb 串口_2019-11-02 Linux下USB-串口的使用
  9. MVP on Board 没用小技巧
  10. extractCSS – 帮助你从 HTML 中快速分离出 CSS
  11. tga文件怎么打开_教你win10系统怎么打开stp文件
  12. oracle undo seg,正确切换undo
  13. linux 子shell
  14. OC4J、UCP、CGI(引用)
  15. 计算机必懂的54个英文单词和缩写
  16. python写小说阅读器_用python实现自己的小说阅读器
  17. AMD GPU 系列版本信息
  18. 微信多开脚本2.0 批处理bat,可一键关闭微信
  19. OEL6.5+11GR2安装(超级详细版)
  20. 新冠全球确诊超2亿!德尔塔后,新「毒王」拉姆达已蔓延32国

热门文章

  1. pandas,numpy的学习
  2. fread函数详解和fwrite函数详解
  3. 第三章微分中值定理及导数应用(方程的根)
  4. LCD1602原理驱动代码及例程
  5. 2023年电工杯B题详解
  6. i910980hk和r9 4900h哪个好
  7. 学习牛津书的免费网站
  8. (附源码)Springboot大学生综合素质测评系统 毕业设计 162308
  9. Python 计算任意两向量之间的夹角
  10. javascript操作数组的方法大全