新手填坑--国产统信UOS操作系统上编译OpenScenGraph(OSG)3.4(附编译成果.so)2023年1月
工作需要在国产统信UOS操作系统上搭建QT+OSG跨平台程序,从网上查了很多资料,踩了多多的坑,也填了多多的坑,
深感统信UOS/Ubuntu/linux系统上OpenSceneGraph编译的指导文档不够多,既然从网上获取了很多资料,本着饮水思源的理念,将我自己的
编译过程记录贡献出来给后来人引路。
以前都是在windows系统上工作,从没有用过linux系统,所以算是小白新手一枚。
【编译的OSG3.4成果 动态库等】
链接:https://pan.baidu.com/s/1QJG2vWF1jdVmbpg6m1MFkg
提取码:1234
---------------------------------------------------------------------------------------------------------------------
统信UOS桌面操作系统 专业版 - 就是 深度(Deepin)linux系统
0sg 3.4 --- 自己去github上下
QT 6.4.1 --- 官网上在线安装
cmake 3.24.2 ---qt中自带
硬件: x86架构的普通机器+统信UOS专业版操作系统
在 Linux 中, 库文件分成静态库和共享库两种。静态库以.a 作为后缀名,共享库以.so结尾
UOS系统中使用的命令跟Ubuntu系统类似。
1、sudo
对普通用户开放root管理员权限,比如文件的修改。
2、chmod
更改目录或文件的访问权限。
sudo chmod 777 sources.list
然后以文本方式打开并将其中的
然后输入 su
sudo chmod 777 * -R
还有一种获取权限的方法
在某文件夹下点击鼠标右键,在弹出菜单中选择 “以管理员身份打开”,输入密码,然后点击鼠标右键选择菜单中的“在终端中打开”,这时打开的cmd窗口里应该已经获取了权限
3、安装库
sudo apt-get install *****
----------------------------------------------------------------------------------------------------------------------------
工作记录
2023.1.13
osg3.4编译
github.com/openscenegraph/OpenSceneGraph
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Could NOT find OpenGL (missing: OPENGL_gl_LIBRARY OPENGL_INCLUDE_DIR)
-- Performing Test GL_HEADER_HAS_GLINT64
-- Performing Test GL_HEADER_HAS_GLINT64 - Failed
-- Performing Test GL_HEADER_HAS_GLUINT64
-- Performing Test GL_HEADER_HAS_GLUINT64 - Failed
-- Could NOT find Freetype (missing: FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS)
-- Could NOT find JPEG (missing: JPEG_LIBRARY JPEG_INCLUDE_DIR)
-- Could NOT find Jasper (missing: JASPER_LIBRARIES JASPER_INCLUDE_DIR JPEG_LIBRARIES)
-- Could NOT find LibXml2 (missing: LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR)
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Could NOT find GDAL (missing: GDAL_LIBRARY GDAL_INCLUDE_DIR)
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29")
-- Checking for module 'gta'
-- No package 'gta' found
-- Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)
-- Could NOT find GStreamer (missing: GSTREAMER_INCLUDE_DIRS GSTREAMER_LIBRARIES GSTREAMER_VERSION GSTREAMER_BASE_INCLUDE_DIRS GSTREAMER_BASE_LIBRARIES GSTREAMER_APP_INCLUDE_DIRS GSTREAMER_APP_LIBRARIES GSTREAMER_PBUTILS_INCLUDE_DIRS GSTREAMER_PBUTILS_LIBRARIES)
-- Could NOT find SDL2 (missing: SDL2_LIBRARY SDL2_INCLUDE_DIR)
-- Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR)
-- Checking for module 'cairo'
-- No package 'cairo' found
-- Checking for module 'poppler-glib'
-- No package 'poppler-glib' found
-- Checking for module 'librsvg-2.0>=2.35'
--
-- Checking for module 'cairo'
-- No package 'cairo' found
-- Checking for module 'gtk+-2.0'
-- No package 'gtk+-2.0' found
-- Checking for module 'gtkglext-x11-1.0'
-- No package 'gtkglext-x11-1.0' found
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory
-- Found unsuitable Qt version "" from NOTFOUND
-- Could NOT find Qt3 (missing: QT_QT_LIBRARY QT_INCLUDE_DIR)
-- Could NOT find JPEG (missing: JPEG_LIBRARY JPEG_INCLUDE_DIR)
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)
-- Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
安装第三方依赖库
https://www.openscenegraph.com/index.php/download-section/dependencies
使用 apt-get build-dep openscenegraph 报错:
creatar@creatar-PC:~/OSG/OpenSceneGraph$ apt-get build-dep openscenegraph
E: 无法打开锁文件 /var/lib/dpkg/lock-frontend - open (13: 权限不够)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),请查看您是否正以 root 用户运行?
https://www.jianshu.com/p/0c2690ca3e55
出现错误:E: 您必须在 sources.list 中指定代码源(deb-src) URI
sudo chmod 777 sources.list
然后以文本方式打开并将其中的
然后输入 su
该用cmake-gui以UI方式编译OSG
通过文件搜索,我们发现安装QT时带了cmake
打开它,可见ui界面,输入osg源码和编译路径
configure选择 unix makefiles,发现报错提示很多依赖没有找到!!!
没辙了,死马当活马医,试着单独安装依赖库吧!!!!
参考:
Deepin Linux 下 OSG 安装
https://blog.csdn.net/lissdd/article/details/123786749
Linux(centos 7,麒麟V7.0已测试)下编译osg3.4.0 osgearth2.8
https://blog.csdn.net/u013693952/article/details/104036939
通过apt-get安装指定版本的软件
https://qastack.cn/ubuntu/508934/how-to-install-libpng-and-zlib
安装zlib
apt-get install zlib-devel
报错提示:
E:无法定位软件包 zlib-devel
那是因为在ubuntu软件源里zlib和zlib-devel叫做zlib1g.dev
名字和错误提示中的名字不一致
sudo apt-get install zlib1g.dev
后面提示希望继续执行吗?【y/n】 y
安装成功。
安装png
sudo apt-get install libpng-dev
安装成功
安装curl
sudo apt-get install libcurl-dev
会提示选择其中一个安装
改为
sudo apt-get install libcurl4-openssl-dev
安装成功
简单测试一下是否安装成功
curl http://www.baidu.com/
安装freetype
该用命令 sudo apt-get install libfreetype6-dev
安装成功
安装jpg
执行 sudo apt-get install libjpeg-dev
安装成功
安装tif
执行 sudo apt-get install libtiff-dev
成功
安装gdal
执行 sudo apt-get install libgdal-dev
安装Opengl
https://blog.csdn.net/long630576366/article/details/125018827
、安装了opengl的核心库
sudo apt-get install libgl1-mesa-dev*
sudo apt-get install build-essential
2、安装OpenGL Library
sudo apt-get install libgl1-mesa-dev
3、安装OpenGL Utilities
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
4、安装OpenGL Utility Toolkit
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
sudo apt-get install mesa-common-dev
sudo apt-get install libglut-dev
2023.01.16
编译OSG
cd buildX64
cmake ..
make
出现错误:
/home/creatar/OSG/OpenSceneGraph/src/OpenThreads/pthreads/PThread.cpp:1084:1: fatal error: opening dependency file CMakeFiles/OpenThreads.dir/PThread.cpp.o.d: 权限不够
}
^
compilation terminated.
make[2]: *** [src/OpenThreads/pthreads/CMakeFiles/OpenThreads.dir/build.make:76:src/OpenThreads/pthreads/CMakeFiles/OpenThreads.dir/PThread.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:5018:src/OpenThreads/pthreads/CMakeFiles/OpenThreads.dir/all] 错误 2
make: *** [Makefile:136:all] 错误 2
尝试修改权限:
sudo chmod 777 * -R
重新执行 make指令
编译正常,成功
执行安装指令
sudo make install
默认会将头文件安装到 /usr/local/include目录下
库.so安装路径/usr/local/lib64
执行文件安装路径 /usr/local/bin
/usr/local/share/OpenSceneGraph/bin
添加环境变量
在/etc/profile 中末尾添加一行 export OSG_FILE_PATH=/home/ziyan/osg/data,
我的OSG数据位置
export OSG_FILE_PATH=/data/home/creatar/OSG/OpenSceneGraph-Data-3.4.0/OpenSceneGraph-Data
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/user/local/lib64
export PATH=$PATH:/data/home/creatar/OSG/OpenSceneGraph/buildX64/bin
设置完仍然无法正常使用osgviewer??提示未找到命令,即使在
经测试发现需要添加sudo 才可以, 应该执行 sudo osgviewer
将 osgviewer程序拷贝到lib目录下执行 sudo osgviewer
提示找不到libosgViewer.so.133动态链接库
但经过检查发现目录下是有这个文件的??难道还是环境变量没有设置成功的缘故???
ubuntu共享库.so文件路径设置 error while loading shared libraries
https://blog.csdn.net/qq_27074519/article/details/118642228
默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去。
1、首先打开/etc/ld.so.conf文件
2、加入动态库文件所在的目录:执行vi /etc/ld.so.conf,在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"和"/data/home/creatar/OSG/OpenSceneGraph/buildX64/lib"。
3、保存后,在命令行终端执行:/sbin/ldconfig -v;其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。
经过以上三个步骤,"error while loading shared libraries"的问题通常情况下就可以解决了。
在终端上输入sudo osgviewer -h 可见调用成功
然后在终端执行sudo osgviewer cow.osg
提示加载数据失败
(2021)Ubuntu环境下OSG的编译、安装与使用(vs code/QT)
https://blog.csdn.net/afgqwjgfjqwgfg/article/details/116296423
改用cow.osg文件全路径名称,成功
sudo osgviewer /data/home/creatar/OSG/OpenSceneGraph-Data-3.4.0/OpenSceneGraph-Data/cow.osg
---------------------------------------------------------------------------------------------------------------------
【编译的OSG3.4成果 动态库等】
链接:https://pan.baidu.com/s/1QJG2vWF1jdVmbpg6m1MFkg
提取码:1234