Fedora下OpenGl开发环境配置

开发OpenGL工程需要3个库文件和对应的头文件:

libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h

这些库在linux系统中默认都有,使用locate命令验证都在标准库目录(/usr/lib)下:

[root@localhost GL]# locate libglut.so
/usr/lib/libglut.so.3
/usr/lib/libglut.so.3.9.0 [root@localhost GL]# locate libGLU.so
/usr/lib/libGLU.so
/usr/lib/libGLU.so.1
/usr/lib/libGLU.so.1.3.070700 [root@localhost GL]# locate libGL.so
/usr/lib/libGL.so
/usr/lib/libGL.so.1 /usr/lib/libGL.so.1.2

但是头文件是没有的,安装开发包之前使用locate验证无法找到相关文件。

安装开发包(需要3个开发包):

yum install mesa-libGL-devel mesa-libGLU-devel //这两个是opengl核心库

yum install freeglut-devel //OpenGL Utility ToolKit

安装完之后用rpm命令验证安装包和查询安装的文件以及安装在什么位置(以glut-devel为例):

[root@localhost etc]# rpm -qa | grep glut

freeglut-devel-2.6.0-1.fc12.i686

[root@localhost etc]# rpm -ql freeglut-devel
/usr/include/GL/freeglut.h
/usr/include/GL/freeglut_ext.h
/usr/include/GL/freeglut_std.h
/usr/include/GL/glut.h
/usr/lib/libglut.so

由上可见安装freeglut之后在/usr/include/GL/目录下添加了glut.h,在/usr/lib/下替换了libglut.so文件。

可以在/usr/include/GL下使用ls验证一下安装的头文件:

[root@localhost GL]# ls
freeglut_ext.h freeglut_std.h gl.h glu.h glut.h glx.h glx_mangle.h glxproto.h internal
freeglut.h glext.h gl_mangle.h glu_mangle.h glxext.h glxint.h glxmd.h glxtokens.h

好了,相关库和头文件都一切就绪,我们可以来写一个最简单的例子程序:

#include <GL/glut.h>
void display(){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2f(-0.5,-0.5);
glVertex2f(-0.5,0.5);
glVertex2f(0.5,0.5);
glVertex2f(0.5,-0.5);
glEnd();
glFlush();
}
int main(int argc,char *argv[]){
glutInit(&argc,argv);
glutCreateWindow("Simple");
glutDisplayFunc(display);
glutMainLoop();
return 0; }

使用如下命令编译:

gcc simple.c -o app -lglut -lGL -lGLU -lm -lX11 -lm

运行./app出现一个画了白色矩形的窗口:

本文引用地址:http://blog.sciencenet.cn/blog-623402-546787.html 此文来自科学网霍振华博客,转载请注明出处。

===

Ubuntu下安装OpenGL配置

OpenGL 是一套由SGI公司发展出来的绘图函式库,它是一组 C 语言的函式,用于 2D 与 3D 图形应用程式的开发上。OpenGL 让程式开发人员不需要考虑到各种显示卡底层运作是否相同的问题,硬体由 OpenGL 核心去沟通,因此只要显示卡支援 OpenGL,那么程式就不需要重新再移植,而程式开发人员也不需要重新学习一组函式库来移植程式。

安装

首先不可或缺的就是编译器与基本的函式库,如果系统没有安装的话,依照下面的方式安装:

    $ sudo apt-get install build-essential

安装OpenGL Library

    $ sudo apt-get install libgl1-mesa-dev

安装OpenGL Utilities

    $ sudo apt-get install libglu1-mesa-dev
   OpenGL Utilities 是一组建构于 OpenGL Library 之上的工具组,提供许多很方便的函式,使 OpenGL 更强大且更容易使用。

安装OpenGL Utility Toolkit

    $ sudo apt-get install libglut-dev

       OpenGL Utility Toolkit 是建立在 OpenGL Utilities 上面的工具箱,除了强化了 OpenGL Utilities 的不足之外,也增加了 OpenGL 对于视窗介面支援。
注意:在这一步的时候,可能会出现以下情况,shell提示: Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libglut-dev

将上述$ sudo apt-get install libglut-dev命令改成$ sudo apt-get install freeglut3-dev即可。

测试

示例test.c源码:

    #include <GL/glut.h>

    void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5, 5, -5, 5, 5, 15);
glMatrixMode(GL_MODELVIEW);
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0); return;
} void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0, 0);
glutWireTeapot(3);
glFlush(); return;
} int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(300, 300);
glutCreateWindow("OpenGL 3D View");
init();
glutDisplayFunc(display);
glutMainLoop(); return 0;
}

编译程式时,执行以下指令:

    $ gcc -o test test.c -lGL -lGLU -lglut

执行:

    $ ./test

配置IDE,用cmake作为构建工具

其实opengl的程序的cmake写法很简单,因为在linux下,头文件已经自动放到系统include路径了,因此只需要在链接的时候加入链接库,和前面用gcc/g++编译的设定几乎一致,无非是把参数写在CMakeLists.txt中。比如用clion作为IDE,那么对应的CMakeLists.txt为:

cmake_minimum_required(VERSION 3.3)
project(hello) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(SOURCE_FILES main.cpp)
add_executable(hello ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} GL GLU glut) #此行为新增

当然,如果你觉得写makefile很容易,那也可以去写的,关键点还是链接库要加入 GL GLU glut三个。

关于cmake的用法,可以参考10分钟搞定cmake。如果进一步想看看pkg-config是怎么玩的,可以参考pkg-config的用法,即在/usr/lib64/pkgconfig路径下查看对应的pc文件。

glew.h头文件

目前还没有用到glew.h头文件,前面fedora的安装中也没有相关的安装。安装方法:

sudo dnf install glew-devel
#会安装glew-devel 和 libGLEWmx两个rpm包

如果是ubuntu,看起来应该这样安装:

sudo apt-get install libglew-dev

Fedora和Ubuntu下安装OpenGL开发环境配置的更多相关文章

  1. ubuntu下安装stm32开发环境

    在windowns下开发stm32刚开始学最烦的就是创建工程模板,都不知道为什么要那样设置,而且步骤繁多.现在我告诉大家一个好消息,在linux下配置stm32开发环境包括创建工程,使用JLink仿真 ...

  2. Ubuntu下嵌入式Qt开发环境配置全攻略

    http://qpcwth.blog.163.com/blog/static/20993024620139151424822/ 在安装的过称中,出现一些问题,注意试想: 1.本次开发环境的配置,是基于 ...

  3. ubuntu下安装ESP8266开发环境步骤中可能出现的问题及解决办法

    安装步骤参考如下链接 https://www.jianshu.com/p/e9ce2a60df83 1.在GitHub上拉取代码时发生错误:RPC failed; curl 18 transfer c ...

  4. Ubuntu下的PHP开发环境架设

    Ubuntu下的PHP开发环境架设   今天重新装了ubuntu那么就吧过程记录下. 打开终端,也就是命令提示符. 我们先来最小化组建安装,按照自己的需求一步一步装其他扩展.命令提示符输入如下命令: ...

  5. ubuntu下搭建JAVA开发环境【转】

    转自:http://jingyan.baidu.com/article/86fae346b696633c49121a30.html JAVA开发环境是一种跨平台的程序设计语言,可以在windows.L ...

  6. ubuntu下搭建android开发环境之超顺畅模拟器

    如果说android系统的卡,像耳边蚊子让人抓狂,那么android模拟器的卡,那就像午睡时的苍蝇.大概就是一样的恶心~~ 那么,这样的问题对于开发者肯定忍无可忍,我也一样,虽然我还没有入门,但我也一 ...

  7. Fedora15下安装Android开发环境

    Fedora15下安装Android开发环境需要以下步骤: 完整步骤. 1. 安装正确版本的JDK. 2. 安装Eclipse. 3.  安装ADT. 4.  安装Android SDK. 5.  安 ...

  8. ubuntu下安装 openssl 开发库

    ubuntu下安装 openssl 开发库 检查是否已安装openssl: sudo apt-get install openssl 如果已安装执行以下操作:sudo apt-get install ...

  9. mac下安装c++开发环境

    mac下安装c++开发环境 1 注册apple id 按照apple注册步骤注册apple id,我注册时遇到如下问题 apple store完成创建apple id步骤中,选择付款方式和账单地址后, ...

随机推荐

  1. [AS3] 问个很囧的问题: 如何遍历Dictionary?

    可以使用 for...in 循环或 for each...in 循环来遍历 Dictionary 对象的内容. for...in 循环用于基于键进行遍历: 而 for each...in   循环用于 ...

  2. pedestal-工作记

    1.基于bootstrap-v3和flat-ui-v3为第十届外语活动月写了个页面 http://www.pedestal.cn/static/activity/index.html 2.资料 boo ...

  3. import javax.servlet.FilterConfig;

    具体的使用方法你可以在google上搜索 “filter 过滤器”,FilterConfig可以获取部署描述符文件(web.xml)中分配的过滤器初始化参数.针对你的问题回答,结果就是说FilterC ...

  4. FusionCharts V3图表导出图片和PDF属性说明(转)

    百闻不如一见,狠狠点击,快快下载:(演示文档有错误,不提供下载了.待新的演示文档出来.) 许多朋友说上面的DEMO用不了.fusioncharts官方的演示非常不错,就是来不及整理,各位大侠们可以研究 ...

  5. 学习node.js 第4篇 建立一个最小的web聊天系统

    我们生活在一个实时的世界里,有什么比聊天更加实时吗?那就让我们先写一个基于TCP 的聊天服务器吧,并且支持Telnet 连接.这很容易,而且能够完全用Node来编写.首先,我们需要在Node 中包含T ...

  6. C++函数内存占用

    一个类的对象中是没有关于普通成员函数的指针的slot,只有成员变量还有虚表指针,类的成员函数的代码定义在PE文件的代码区,所以从程序加载时,就已经分配好了内存用于存放这些代码:代码运行时所需要的内存, ...

  7. C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出

    class TimeCount { // 临时变量,存放当前类能表示的最大年份值 ; /// <summary> /// 获取毫秒能表示的最大年份数 /// </summary> ...

  8. php基础02:变量

    1.创建变量 <?php $num1 = 15; $num2 = 15.5; echo $num1+$num2; echo "<br>"; ?> 2.Loc ...

  9. Android 获取地理位置的经度和纬度(zz)

    在Android应用程序中,可以使用LocationManager来获取移动设备所在的地理位置信息.看如下实例:新建android应用程序TestLocation. 1.activity_main.x ...

  10. 在coding上添加ssh-key

    第一步:检查有没有ssh-key 第二步:生成ssh-key 第三步:添加到coding上或者Github上. ls -al ~/.ssh ssh-keygen -t rsa -C "you ...