当前位置: 首页 > news >正文

Linux系统下安装Vcpkg,并使用Vcpkg安装、编译OpenSceneGraph

环境:CentOS7
内存:8g(内存过少编译osg时会出现内存不足导致编译失败的情况,内存设置为4G时失败了,我直接加到了8g,所以就以8g为准了)

  1. 安装和配置vcpkg
cd ~/
git clone https://www.github.com/microsoft/vcpkg
cd vcpkg/
./bootstrap-vcpkg.sh # 这一步将生成二进制文件 `/vcpkg/vcpkg
sudo ln -s ~/vcpkg/vcpkg /usr/bin/vcpkg # 这一步是创建软连接,让你在shell中能直接使用vcpkg命令
export VCPKG_DEFAULT_TRIPLET=x64-linux #设置环境变量:vcpkg默认的三元组,保证安装的包是64位的
  1. 升级git
git --version #git 版本至少为2.7.4
sudo yum -y remove git
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
sudo yum -y install git 
git --verison
  1. 安装osg
  1. 安装编译osg时需要的依赖
#安装python3yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel #安装编译 Python3的相关包
# 添加 epel 扩展源 
yum -y install epel-release 
# 安装 pip 
yum install python-pip
# 安装pip3,也可以不安装
yum install -y python3-pip
pip install wget
# 从华为云镜像站下载
wget https://mirrors.huaweicloud.com/python/3.7.2/Python-3.7.2.tgz
# 解压缩
tar -zxvf Python-3.7.2.tgz
# 进入解压后的目录
cd Python-3.7.2
# 依次执行下面命令进行手动编译
./configure prefix=/usr/local/python3 
make && make install
# 删除原来的 python 软链接
rm /usr/bin/python
# 添加 python 的软链接 
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python
# 添加 python3 的软链接,必须链接到'/usr/bin/python3',不能时python3.7或者其他的,一会编译osg的依赖时会寻找python3,且是根据名称寻找
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
# 添加 pip3 的软链接 
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3.7
# 测试是否安装成功了 
python -V
vi /usr/bin/yum 
# 把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
# 把 #! /usr/bin/python 修改为 #! /usr/bin/python2sudo yum -y install perl-IPC-Cmd # 编译osg时,某个依赖编译时所需要的包export CFLAGS="-std=c99" #编译fontconfig、pcre2要c99标准sudo yum install -y libxi-devel mesa-libGLU-devel #编译freeglut要安装libxi-devel和mesa-libGLU-devel
#编译gdal需要高版本的gcc
sudo yum install -y centos-release-scl #安装CentOS SCL仓库
sudo yum install -y devtoolset-8 #安装所需的devtoolset包(例如,devtoolset-8)
scl enable devtoolset-8 bash #激活devtoolset以使用新的GCC版本
gcc --version #检查GCC版本是否已更新
#请注意,激活仅对当前会话有效
  1. 安装osg
vcpkg install osg
  1. 测试是否安装成功
#include <osg/Geode>
#include <osg/Geometry>
#include <osgViewer/Viewer>
#include <iostream>
int main()
{// Create a root nodeosg::ref_ptr<osg::Group> root = new osg::Group;// Create a Geode containing a simple cubeosg::ref_ptr<osg::Geode> geode = new osg::Geode;osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array;vertices->push_back(osg::Vec3(-0.5, -0.5, 0));vertices->push_back(osg::Vec3(0.5, -0.5, 0));vertices->push_back(osg::Vec3(0.5, 0.5, 0));vertices->push_back(osg::Vec3(-0.5, 0.5, 0));geometry->setVertexArray(vertices);osg::ref_ptr<osg::DrawElementsUInt> quad =new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);quad->push_back(0);quad->push_back(1);quad->push_back(2);quad->push_back(3);geometry->addPrimitiveSet(quad);geode->addDrawable(geometry);root->addChild(geode);std::cout<<"successed!"<<std::endl;// Create a viewer and set the scene dataosgViewer::Viewer viewer;viewer.setSceneData(root);// Run the viewer loopreturn viewer.run();
}
g++ -o osg_test osg_test.cpp -I/root/vcpkg/installed/x64-linux/include -Wl,--no-as-needed -L/root/vcpkg/installed/x64-linux/lib -losgViewer -losgUtil -losgGA -losgDB -losg -lOpenThreads -ldl -lGL -lpthread -lm -lstdc++
./osg_test
# 执行结果,打印出successed!就说明安装成功了,至于后面的报错应该与显卡驱动等有关,但是在linux中安装osg也不是为了渲染
# successed!
# Warning: GraphicsContext::WindowingSystemInterfaces::getWindowingSystemInterface() failed, no interfaces available.
# AcrossAllScreens::configure() : Error, no WindowSystemInterface available, cannot create windows.
# Viewer::realize() - failed to set up any windows

相关文章:

  • 每日温度00
  • SD-WAN组网设计原则:灵活、安全、高效
  • ❤ Uniapp使用二 ( 日常使用篇)
  • 超级弱口令检查工具
  • [C#]C# winform部署yolov8目标检测的openvino模型
  • 【软件测试学习笔记7】Linux指令实操练习
  • 自动驾驶模拟器
  • 解决kali beef启动失败解问题
  • 高清网络视频监控系统技术方案
  • 【Bug】.net6 cap总线+rabbitmq延时消息收不到
  • (初研) Sentence-embedding fine-tune notebook
  • Git学习笔记(第6章):GitHub操作(远程库操作)
  • Transformer详解(附代码实现及翻译任务实现)
  • TypeScript语法总结
  • 限流算法之流量控制的平滑之道:滑动时间窗算法
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 10个最佳ES6特性 ES7与ES8的特性
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 5、React组件事件详解
  • es的写入过程
  • httpie使用详解
  • NSTimer学习笔记
  • PaddlePaddle-GitHub的正确打开姿势
  • vue.js框架原理浅析
  • 回流、重绘及其优化
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 使用 Docker 部署 Spring Boot项目
  • 使用API自动生成工具优化前端工作流
  • 说说动画卡顿的解决方案
  • 我从编程教室毕业
  • 用Python写一份独特的元宵节祝福
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Linux(帮助手册)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (1)SpringCloud 整合Python
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (26)4.7 字符函数和字符串函数
  • (39)STM32——FLASH闪存
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (独孤九剑)--文件系统
  • (二)linux使用docker容器运行mysql
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (七)理解angular中的module和injector,即依赖注入
  • (新)网络工程师考点串讲与真题详解
  • (轉貼) UML中文FAQ (OO) (UML)
  • *Django中的Ajax 纯js的书写样式1
  • *上位机的定义
  • .NET Framework .NET Core与 .NET 的区别
  • .NET NPOI导出Excel详解
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 设置默认首页