本文主要针对自己测试/学习各种奇葩代码时所遇到的形形色色问题而总结
1. fatal error: GL/glew.h: No such file or directory
- sudo apt-get install libglew-dev 即可解决
2. fatal error: GLFW/glfw3.h: No such file or directory
这是个大麻烦,参考了How to build & install GLFW 3 and use it in a Linux project和ubuntu 14.04下编译GLFW3筛选了,找到了如下完美解决方案
- 下载GLFW源代码
- 安装cmake cmake-gui 使用sudo apt-get install cmake cmake-gui
- 安装编译环境,sudo apt-get build-dep glfw or
sudo apt-get build-dep glfw3
sudo apt-get install cmake xorg-dev libglu1-mesa-dev - 进入GLFW.zp解压后的目录,....cd glfw-3.X.X
- 尽情地make和 sudo make install,看着代码刷刷刷飞过,特别舒服编译完成后,会显示安装完成的目录所在,我的是
- 不要忘了测试,新建test.cpp,贴进如下代码:
#include#include #include static void error_callback(int error, const char* description) { fputs(description, stderr); } static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) glfwSetWindowShouldClose(window, GL_TRUE); } int main(void) { GLFWwindow* window; glfwSetErrorCallback(error_callback); if (!glfwInit()) exit(EXIT_FAILURE); window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL); if (!window) { glfwTerminate(); exit(EXIT_FAILURE); } glfwMakeContextCurrent(window); glfwSetKeyCallback(window, key_callback); while (!glfwWindowShouldClose(window)) { float ratio; int width, height; glfwGetFramebufferSize(window, &width, &height); ratio = width / (float) height; glViewport(0, 0, width, height); glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glRotatef((float) glfwGetTime() * 50.f, 0.f, 0.f, 1.f); glBegin(GL_TRIANGLES); glColor3f(1.f, 0.f, 0.f); glVertex3f(-0.6f, -0.4f, 0.f); glColor3f(0.f, 1.f, 0.f); glVertex3f(0.6f, -0.4f, 0.f); glColor3f(0.f, 0.f, 1.f); glVertex3f(0.f, 0.6f, 0.f); glEnd(); glfwSwapBuffers(window); glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); exit(EXIT_SUCCESS); }
- g++ -std=c++11 -c test.cpp生成.o文件
- g++ test.o -o test.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
- Enjoy it
3.又出现了新的问题fatal error: glm.hpp: No such file or directory
缺少glm.hpp文件,需要安装glm,即OpenGL Mathematics,下载之,解压之,得到glm文件夹,其中还有同名子文件夹glm,其余还有doc文件夹,里边有glm的文档说明pdf。
值得注意的是,glm只是一个C++的库,不需要去build它。
cd进入glm根目录,对子文件夹glm进行操作 sudo cp -r glm/ /usr/local/include/ ,-r是复制所有子文件子文件夹。
缺少glm.hpp文件,需要安装glm,即OpenGL Mathematics,下载之,解压之,得到glm文件夹,其中还有同名子文件夹glm,其余还有doc文件夹,里边有glm的文档说明pdf。
值得注意的是,glm只是一个C++的库,不需要去build它。
cd进入glm根目录,对子文件夹glm进行操作 sudo cp -r glm/ /usr/local/include/ ,-r是复制所有子文件子文件夹。
按照官方说明安装好了,可是我的问题又出来了——还是报错。。。。绞尽脑汁,反复谷歌,还是没有找出问题。脑子一拍,看了下头文件**.h 头文件,娘西皮的,竟然是#include<glm.hpp>,而我的路径是/include/glm/glm.hpp。修改头文件为#include<glm/glm.hpp>问题就解决了!
4.fatal error: : No such file or directory
谁能告诉我opencv2和opencv是不是一代二代的关系,心力憔悴,先睡去了。
-------------睡不着我又回来了-------------
应该头文件opencv2是opencv里边的,不管怎么样,先安装opencv吧
下载最新的opencv.sh文件,cd进入此目录。执行chmod +x opencv.sh ,然后./opencv.sh
4.fatal error: : No such file or directory
谁能告诉我opencv2和opencv是不是一代二代的关系,心力憔悴,先睡去了。
-------------睡不着我又回来了-------------
应该头文件opencv2是opencv里边的,不管怎么样,先安装opencv吧
下载最新的opencv.sh文件,cd进入此目录。执行chmod +x opencv.sh ,然后./opencv.sh
没有评论:
发表评论