使用msys2构建OSG程序

前言

让我们先从两个小故事开始:

故事一

Unix在研发成功不久后,便被放在贝尔实验室供大家使用。

有一天,大家发现两位创始人总是可以得到最高的权限,轻松地进入他们的帐户!

在贝尔实验室这种高人云集的地方,这简直是太不能容忍的事情了。于是,若干愤懑的同事仔细分析Unix代码,找到后门,修改后再重新编译整个Unix程序。

当所有人都以为这个世界应该从此清静了的时候,却发现他们的帐户权限还是很容易泄露。

直到很多年后,丹尼斯里奇才道出其中的原委:原来,代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里。

故事二

1997年,由于喜欢滑翔机运动且对计算机图形学非常熟悉,Don Burns在 IRIX上写了一个控制滑翔机的小引擎,这便是 OSG 的最初雏形。

一年后,他在滑翔机爱好者邮件列表中遇到了 Robert Osfield,这对OSG的命运起到了决定性的改变!

注:

  • OSG全称OpenSceneGraph最初是在IRIX系统上构建的开放源代码,跨平台的三维引擎。

  • IRIX是SGI公司的图形工作站,基于BSD UNIX的操作系统;另外最初版的OpenGL是SGI公司制定的标准。

准备

UNIX、编译器、OpenGL、OSG这些科技名词可能会让极客心跳加速,有想了解,并从头构建的冲动。

自从棱镜门事件,到中兴、华为被美国、西欧制裁这段时间,国产化一再被提及。信息技术代表了最新进的生产力,在中国,信息化被确定为国家核心战略之一。一个无法回避的事实是,全球IT核心技术大多掌握在欧美国家手中,逐步缩小并超越国外先进信息技术,尽早打破国外的技术垄断,是我国的信息化建设的必然选择。

从头开始构建,被程序圈戏称为“造轮子”。

某些人给的解释是:明知道你做的不可能比前辈做得更好,却仍然坚持要做。

虽然有些贬义,但不乏对技术执着的人生态度。日本比我们国家的程序员更具有极客精神,从自制CPU,到自制操作系统,自制编程语言,生态链比我们完备。我们要有危机感,就像中国每年向俄罗斯订购发动机一样,万一哪天不卖了,或者落后美国太多了,我们又将拿什么去应对那时的国际形势?

好了,我们开始研究程序界的“发动机”!

通过一些资料可以了解gcc是开源的编译器,默认在UNIX/Linux的一些发行版上。在windows上可以通过很多方式去获取,比较简单的方式为安装msys2。

注:

msys2包含了Linux下常用的命令。

常用命令:

  • cd:目录变更;ls:列表显示;rm:删除;

  • tar:压缩解压;mount:挂载…

比较有名的实现是busybox,三百多个最常用Linux命令和工具的软件,用来和内核交互。

Android内核为Linux,可以安装busybox;通过chroot替换系统刷机、或装别的系统。

安装

1、打开http://www.msys2.org/
使用msys2构建OSG程序_第1张图片
2、根据需求下载32位、64位版本
32位:msys2-i686-20180531.exe
64位:msys2-x86_64-20180531.exe

3、安装
根据提示下一步安装、不要装在中文路径下。

4、配置国内源
msys2提供了ArchLinux的包管理机制,使用方法类似于ubuntu的apt、redhat的rpm。为了方便国内用户使用,一些大学、公司提供了镜像代理。

5、启动和更新msys2

找到msys2的安装目录下的etc/pacman.d目录
使用msys2构建OSG程序_第2张图片

  • 编辑 /etc/pacman.d/mirrorlist.mingw32,在文件开头添加
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686
  • 编辑 /etc/pacman.d/mirrorlist.mingw64,在文件开头添加
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64
  • 编辑 /etc/pacman.d/mirrorlist.msys,在文件开头添加
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch

6、 安装相应平台的cmake、qtcreator
进入安装目录

  • 启动
    32位启动mingw32.exe
    64位启动mingw64.exe

  • pacman -Sy同步源
    使用msys2构建OSG程序_第3张图片

  • pacman -Syu更新软件包
    输入y回车安装
    使用msys2构建OSG程序_第4张图片

    安装gcc工具链

    pacman -S mingw-w64-x86_64-toolchain
    使用msys2构建OSG程序_第5张图片

  • 查询osg
    安装前需要知道osg的软件包名,和版本号
    使用 pacman -Ss OpenSceneGraph | grep Open

注:

直接搜寻可能会匹配很多,比如会查找到osgEarth osgBullt osgQt,用grep进行过滤。 使用msys2构建OSG程序_第6张图片
32位Release安装包: mingw32/mingw-w64-i686-OpenSceneGraph

64位Release安装包:mingw64/mingw-w64-x86_64-OpenSceneGraph

32位 Debug安装包:mingw32/mingw-w64-i686-OpenSceneGraph-debug

64位Debug安装包:mingw64/mingw-w64-x86_64-OpenSceneGraph-debug

  • 安装具体的软件包(pacman -S 软件包名)

使用msys2构建OSG程序_第7张图片

7、把gcc加入到环境变量
Msys32的主目录中有mingw32\bin mingw64\bin
根据相应平台把其中的bin加入到WINDOWS 的PATH中

8、打开Windows附件命令行 输入gcc -v,验证是否有如下输出:
使用msys2构建OSG程序_第8张图片
9、配置QtCreator创建CMake工程
新建C++项目->Non-Qt Project-> Plain C++ Application -> Build System cmake

10、编写CMakeLists脚本,CPP代码执行
使用msys2构建OSG程序_第9张图片
结语

至此,一个完整的构建过程就完成了。但同时,还有很多问题值得我们去探索,以下罗列的或许能给你提供一些思考方向~

LIST:

  • 如何在msys2中源码编译?

  • msys2软件包管理是怎样的流程? 如何自己定制软件包?

  • msys2是如何构建出来的?

  • msys2的库是否能用在visutal stuido中?

  • 在visual studio 中能否使用gcc , gdb去调试?—可以搜索下visualgdb插件.

  • 在国外发行版linux,在国产操作系统银河麒麟、中标麒麟、深度Linux 中gcc使用是否一样?

  • 飞腾、龙芯CPU中的gcc使用?

  • 在inetl AMD CPU中能否编译出国产CPU可以执行的程序?----交叉编译

  • 除了gcc之外还有别的开源编译器值得我们去研究么?-----llvm clang.

  • C++可否编译别的语言? —这也是本文的最后的附图,把C++版的osg编译为Web汇编跑在浏览器中?

你可能感兴趣的:(msys2,OSG)