当前位置: 首页 > 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

相关文章:

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

环境&#xff1a;CentOS7 内存&#xff1a;8g(内存过少编译osg时会出现内存不足导致编译失败的情况&#xff0c;内存设置为4G时失败了&#xff0c;我直接加到了8g&#xff0c;所以就以8g为准了) 安装和配置vcpkg cd ~/ git clone https://www.github.com/microsoft/vcpkg cd …...

设计模式二(工厂模式)

本质&#xff1a;实例化对象不用new&#xff0c;用工厂代替&#xff0c;实现了创建者和调用者分离 满足&#xff1a; 开闭原则&#xff1a;对拓展开放&#xff0c;对修改关闭 依赖倒置原则&#xff1a;要针对接口编程 迪米特原则&#xff1a;最少了解原则&#xff0c;只与自己直…...

Maven应用手册

没加载出来就reimport&#xff0c;这个时候clean和install没用&#xff0c;那是编译安装项目的。 reimport干了什么&#xff1f; 结合idea的maven教程 父子模块 子模块不需要groupId ruoyi中父模块还添加了子模块的依赖&#xff0c;&#xff0c;&#xff0c; 先安装父再是子…...

笨蛋学设计模式行为型模式-状态模式【20】

行为型模式-状态模式 8.7状态模式8.7.1概念8.7.2场景8.7.3优势 / 劣势8.7.4状态模式可分为8.7.5状态模式8.7.6实战8.7.6.1题目描述8.7.6.2输入描述8.7.6.3输出描述8.7.6.4代码 8.7.7总结 8.7状态模式 8.7.1概念 ​ 状态模式是指对象在运行时可以根据内部状态的不同而改变它们…...

C++从零开始的打怪升级之路(day18)

这是关于一个普通双非本科大一学生的C的学习记录贴 在此前&#xff0c;我学了一点点C语言还有简单的数据结构&#xff0c;如果有小伙伴想和我一起学习的&#xff0c;可以私信我交流分享学习资料 那么开启正题 今天分享的是关于vector的题目 1.只出现一次的数字1 136. 只出…...

浅谈安科瑞直流电表在新加坡光伏系统中的应用

摘要&#xff1a;本文介绍了安科瑞直流电表在新加坡光伏系统中的应用。主要用于光伏系统中的电流电压电能的计量&#xff0c;配合分流器对发电量进行计量。 Abstract: This article introduces the application of Acrel DC meters in PV system in Indonesia.The device is …...

C++参悟:数值运算相关

数值运算相关 一、概述二、常用数学函数1. 基础运算1. 浮点值的绝对值&#xff08; |x| &#xff09;2. 浮点除法运算的余数3. 除法运算的有符号余数4. 除法运算的有符号余数和最后三个二进制位5. 混合的乘加运算6. 两个浮点值的较大者7. 两个浮点值的较小者8. 两个浮点值的正数…...

【Web前端开发基础】CSS的定位和装饰

CSS的定位和装饰 目录 CSS的定位和装饰一、学习目标二、文章内容2.1 定位2.1.1 定位的基本介绍2.1.2 定位的基本使用2.1.3 静态定位2.1.4 相对定位2.1.5 绝对定位2.1.6 子绝父相2.1.7 固定定位2.1.8元素的层级关系 2.2 装饰2.2.1 垂直对齐方式2.2.2 光标类型2.2.3 边框圆角2.2.…...

[pytorch入门] 3. torchvision中的transforms

torchvision中的transforms 是transforms.py工具箱&#xff0c;含有totensor、resize等工具 用于将特定格式的图片转换为想要的图片的结果&#xff0c;即用于图片变换 用法 在transforms中选择一个类创建对象&#xff0c;使用这个对象选择相应方法进行处理 能够选择的类 列…...

WINCC读写EXCEL-VBS

原创 RENHQ WINCC 关于VBS操作EXCEL的文档不管在论坛上还是在网上&#xff0c;相关的脚本已经很多&#xff0c;但是依然有很多人在问这个问题&#xff0c;于是把我以前在论坛上发的一个集合帖子的脚本拿来&#xff0c;重新开个帖子&#xff0c;如果再有人问的话&#xff0c;可…...

Python os模块

简介 Python的os模块是一个标准库模块&#xff0c;用于提供与操作系统相关的功能&#xff08;相当于接口&#xff09;。os模块允许Python程序与文件系统、目录结构、进程管理等操作系统级别的功能进行交互。 主要功能 文件和目录操作 创建、删除、重命名文件和目录&#xf…...

Elasticsearch:2023 年 Lucene 领域发生了什么?

作者&#xff1a;来自 Elastic Adrien Grand 2023 年刚刚结束&#xff0c;又是 Apache Lucene 开发活跃的一年。 让我们花点时间回顾一下去年的亮点。 社区 2023 年&#xff0c;有&#xff1a; 5 个次要版本&#xff08;9.5、9.6、9.7、9.8 和 9.9&#xff09;&#xff0c;1 …...

Java算法 leetcode简单刷题记录4

Java算法 leetcode简单刷题记录4 买卖股票的最佳时机&#xff1a; https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 笨办法&#xff1a; 记录当天的值及之后的最大值&#xff0c;相减得到利润&#xff1b; 所有的天都计算下&#xff0c;比较得到利润最大值&…...

opencv#27模板匹配

图像模板匹配原理 例如给定一张图片&#xff0c;如上图大矩阵所示&#xff0c;然后给定一张模板图像&#xff0c;如上图小矩阵。 我们在大图像中去搜索与小图像中相同的部分或者是最为相似的内容。比如我们在图像中以灰色区域给出一个与模板图像尺寸大小一致的区域&#xff0c;…...

【论文阅读笔记】Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation

1.介绍 Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation Swin-Unet&#xff1a;用于医学图像分割的类Unet纯Transformer 2022年发表在 Computer Vision – ECCV 2022 Workshops Paper Code 2.摘要 在过去的几年里&#xff0c;卷积神经网络&#xff…...

IS-IS:01 ISIS基本配置

这是实验拓扑&#xff0c;下面是基本配置&#xff1a; R1: sys sysname R1 user-interface console 0 idle-timeout 0 0 int loop 0 ip add 1.1.1.1 24 int g0/0/0 ip add 192.168.12.1 24 qR2: sys sysname R2 user-interface console 0 idle-timeout 0 0 int loop 0 ip add …...

基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测

目录 背影 极限学习机 基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测 主要参数 MATLAB代码 效果图 结果分析 展望 完整代码下载链接:基于极限学习机的曲线分类,基于极限学习机的光谱分类,基于极限学习机的分类预测的MATLAB代码资源-CSDN…...

miniconda安装

Miniconda是一个小型版的Anaconda&#xff0c;它包含了一个包管理工具conda和Python。Miniconda适用于那些只需要管理Python包和环境&#xff0c;而不需要Anaconda中包含的大部分科学计算工具的用户。 Miniconda的安装过程相对简单。你可以从清华大学开源软件镜像站下载Minico…...

PHP判断访客是否手机端(移动端浏览器)访问的方法总结

PHP判断访客是否手机端、移动端、浏览器访问的方法总结 方法一&#xff1a;使用$_SERVER全局变量方法二&#xff1a;使用PHP的get_browser函数方法三&#xff1a;使用第三方库&#xff08;Mobile Detect&#xff09;方法四&#xff1a;使用WURFL设备数据库 方法一&#xff1a;使…...

vscode无法自动补全

前提&#xff1a;安装c/c插件 c/c插件功能非常强大&#xff0c;几乎能满足日常编码过程中常用的功能&#xff1b;因此也包含自动补全的功能&#xff0c;开启方法如下&#xff1a; 文件->首选项->设置&#xff1a; 扩展->c/c->Intellisense&#xff0c;找到Intell…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...