環(huán)境:CentOS7
內(nèi)存:8g(內(nèi)存過少編譯osg時會出現(xiàn)內(nèi)存不足導(dǎo)致編譯失敗的情況,內(nèi)存設(shè)置為4G時失敗了,我直接加到了8g,所以就以8g為準了)文章來源地址http://www.zghlxwxcb.cn/news/detail-803448.html
- 安裝和配置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 # 這一步是創(chuàng)建軟連接,讓你在shell中能直接使用vcpkg命令
export VCPKG_DEFAULT_TRIPLET=x64-linux #設(shè)置環(huán)境變量:vcpkg默認的三元組,保證安裝的包是64位的
- 升級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
- 安裝osg
- 安裝編譯osg時需要的依賴
#安裝python3
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel #安裝編譯 Python3的相關(guān)包
# 添加 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
# 依次執(zhí)行下面命令進行手動編譯
./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,且是根據(jù)名稱尋找
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/python2
sudo 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版本是否已更新
#請注意,激活僅對當前會話有效
- 安裝osg
vcpkg install osg
- 測試是否安裝成功
#include <osg/Geode>
#include <osg/Geometry>
#include <osgViewer/Viewer>
#include <iostream>
int main()
{
// Create a root node
osg::ref_ptr<osg::Group> root = new osg::Group;
// Create a Geode containing a simple cube
osg::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 data
osgViewer::Viewer viewer;
viewer.setSceneData(root);
// Run the viewer loop
return 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
# 執(zhí)行結(jié)果,打印出successed!就說明安裝成功了,至于后面的報錯應(yīng)該與顯卡驅(qū)動等有關(guān),但是在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
文章來源:http://www.zghlxwxcb.cn/news/detail-803448.html
到了這里,關(guān)于Linux系統(tǒng)下安裝Vcpkg,并使用Vcpkg安裝、編譯OpenSceneGraph的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!