前言
让我们先从两个小故事开始:
故事一
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/
2、根据需求下载32位、64位版本
32位:msys2-i686-20180531.exe
64位:msys2-x86_64-20180531.exe
3、安装
根据提示下一步安装、不要装在中文路径下。
4、配置国内源
msys2提供了ArchLinux的包管理机制,使用方法类似于ubuntu的apt、redhat的rpm。为了方便国内用户使用,一些大学、公司提供了镜像代理。
5、启动和更新msys2
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch
6、 安装相应平台的cmake、qtcreator
进入安装目录
启动
32位启动mingw32.exe
64位启动mingw64.exe
安装gcc工具链
查询osg
安装前需要知道osg的软件包名,和版本号
使用 pacman -Ss OpenSceneGraph | grep Open
注:
直接搜寻可能会匹配很多,比如会查找到osgEarth osgBullt osgQt,用grep进行过滤。
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
7、把gcc加入到环境变量
Msys32的主目录中有mingw32\bin mingw64\bin
根据相应平台把其中的bin加入到WINDOWS 的PATH中
8、打开Windows附件命令行 输入gcc -v,验证是否有如下输出:
9、配置QtCreator创建CMake工程
新建C++项目->Non-Qt Project-> Plain C++ Application -> Build System cmake
至此,一个完整的构建过程就完成了。但同时,还有很多问题值得我们去探索,以下罗列的或许能给你提供一些思考方向~
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汇编跑在浏览器中?