编译linux版本osg osgearth 问题记录

  1. 为什么不直接使用源码?而是编译成链接库再使用?
    首先,直接使用源码和编译成链接库再使用,他们在功能上是一样的,都是提供相应的函数接口。
    再次,链接库本质上是二进制代码,是前辈们的函数代码编译而成,可以直接被加载到内存中使用。
    链接库有两种:静态库和动态库
    静态库是在程序编译时直接加载到可执行文件中,优点:速度快,移植性强;缺点:使可执行文件很大,占空间多。
    动态库是在程序执行时动态的加载到内存中,优点:可以被多个使用此动态库的进程共享,占用空间少;
    缺点:速度慢,需要找到相应的代码再链接;移植性弱;
    另外,使用源码每次调试时都需要编译,浪费时间。

  2. Linux下怎么编译?
    0)下载源码、cmake(应使用2.8或更高版本)、Linux系统、依赖库
    1)先安装Linux系统、依赖库、cmake
    sudo apt-get build-dep openscenegraph #安装必备依赖库
    sudo apt-get install mesa-common-dev freeglut3 freeglut3-dev #安装OpenGL库,否则提示找不到文件<GL/gl.h>
    2)使用cmake将源码中的CMakeLists.txt文件,为选定的编译器生成Makefile文件。
    mkdir build //创建build文件夹,用于存放生成的库文件
    cd build
    cmake …/OpenSceneGraph
    3)正式编译
    make
    sudo make install
    4)环境变量
    设置环境变量,参考csdn上收藏的文章(编译osg)。

  3. bat文件是什么?
    bat文件是dos下的批处理文件。
    dos是一种使用广泛的磁盘操作系统。
    而批处理文件是使用脚本语言编写,由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND.COM或者CMD.EXE)解释运行。
    批处理文件存在于dos和window操作系统中。里面是一条条的命令,这也是为什么叫批处理的原因,批处理命令。

  4. cmake是什么?
    cmake是跨平台的编译工具,可以编译源码、产生库;可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。
    通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。

  5. Makefile是什么?
    一个大型工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,可能包含程序、数据、文档、衍生文件等。
    他们可能是在不同的时间、由不同的人编写,甚至参与开发的人也不清楚所有文件的细节,所以其编译、维护是一个复杂而耗时的过程。
    并且在开发过程中当修改了少量几个文件后,往往只需要重新编译、生成少数几个文件。但如果不知道这其中的关系,就只能全部编译。

    Makefile可以有效地描述这些文件之间的依赖关系以及处理命令,当个别文件改动后仅执行必要的处理,而不必重复整个编译过程。
    makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的
    功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。一旦写好,只需要一个make命令,整个工程完全自动编译。

    make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Visual C++的nmake,
    Linux下GNU的make。

  6. osg与osgearth的关系?
    osg是一个专门为了三维图像而生成的函数库;osgearth是在osg的基础上,更加集中于构建三维地球的函数库。
    osgearth中会调用到一系列的osg中的函数,而不同版本的osg函数名可能取消或者更改,所以二者版本号需要适配。
    osg3.6.5与osgearth3.2适配。

  7. CMakeLists.txt详解?cmake语法
    CMakeLists.txt文件是用于构建软件包的CMake构建系统的输入。任何符合cmake的包都包含一个或多个CMakeLists.txt文件,该文件描述了如何构建代码以及将其安装到哪里。

  8. Linux软件源?(gdal版本)
    问题:报错,找不到gdal相关函数。
    分析:没有库、库没有加载进来、库版本不对

  9. opengl是什么?opengl与显卡/显卡驱动的关系?
    开放图形库,用于渲染2D、3D图形的跨平台、跨语言的一组API(接近350个)。一般由显示设备(显示器 、显卡)厂商提供,并特别依赖该厂商提供的硬件。
    那厂商有那么多,岂不是opengl有很多版本?SGI牵头联合其他显卡和计算机制造商共同定制了一套API规则,每个厂商都遵循这个规则,这样其他厂商的硬件也可以调用这个厂商开发的opengl库。所以opengl实际上指示一套API规则。
    驱动程序是操作系统和硬件之间的软件组件,他可以被操作系统调用来控制硬件;因为硬件内部构造只有生产厂家知道,所以厂家也提供相应的硬件驱动以供操作系统调用。应用程序调用操作系统API,操作系统调用驱动API,驱动再控制硬件。
    而显卡驱动就是显卡厂商为某个系列的显卡根据opengl规则所实现的一组API。显卡驱动将收到的渲染命令翻译成GPU能理解的语言、将纹理等数据转换成GPU支持的格式。

    开源库Mesa是一个纯基于软件的、符合opengl格式的API。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值