昨晚我工作很晚,试图从源代码为Linux构建GLFW 3软件包。这个过程花了我很长的时间,总共约3个小时,部分是因为我不熟悉CMake,部分是因为我不熟悉GLFW。
我希望这篇文章能使您摆脱昨天遇到的麻烦!我以为我应该写些简短的文章,并希望为您节省几个小时的生活…
多亏了#glfw IRC频道上的“ urraka”,“ b6”和“ niklas”,我才能够使用glfw 3.0.1版。
事实证明,这并不是一个微不足道的过程(肯定不是我一个人,我也不是专家),因为在网络上没有太多有关glfw3的文档,特别是有关使用CMake进行设置的文档。
我被要求将其分为一个问答部分,所以我做到了,现在下面是答案部分。
如果GLFW3的任何维护者看到此消息,那么我给他们的信息是,请在您的网站上添加“在Windows,Mac OS X和Linux上设置GLFW3”部分!使用GLFW编写程序非常容易,因为在线文档非常好,可以快速扫描所有可用的类和模块,您就可以开始使用。这里特色的测试项目的例子也很好。我发现的两个主要问题是,第一,如何在系统上设置GLFW3,第二,如何构建GLFW3项目?对于非专家来说,这两件事可能还不够清楚。
今天(日期:2014年1月14日)进行了简要介绍,看来自我上次浏览以来,GLFW网站已经发生了重大变化,现在有一节介绍如何使用GLFW编译GLFW和构建程序,我认为这是新的。
对于此安装,我使用的是64位KUbuntu 13.04。
第一步可能是使用此链接从www.glfw.org下载最新版本(假设以后的版本以类似的方式)。
下一步是提取档案,然后打开一个终端。cd进入glfw-3.XX目录并运行,cmake -G "Unix Makefiles"您可能需要提升的特权,并且还可能需要先 安装构建依赖项 。要做到这一点,尝试sudo apt-get build-dep glfw 或 sudo apt-get build-dep glfw3 或 做手工 ,像我一样用sudo apt-get install cmake xorg-dev libglu1-mesa- dev......有可能是你需要其他库,如并行线程库......显然,我有他们了。(请参阅下面提供给g ++链接器阶段的-l选项。)
cd
cmake -G "Unix Makefiles"
sudo apt-get build-dep glfw
sudo apt-get build-dep glfw3
sudo apt-get install cmake xorg-dev libglu1-mesa- dev
现在,您可以输入make,然后输入make install,可能需要sudo先输入。
make
make install
sudo
好的,您应该在最后三个CMake阶段得到一些详细的输出,告诉您已构建的内容或放置位置。(/usr/include例如,在中。)
/usr/include
下一步是启动vim(您说“什么?!vim ?!”)或您喜欢的IDE /文本编辑器…我没有使用vim,而是使用Kate,因为我使用的是KUbuntu 13.04。无论如何,请从此处(页面底部)下载或复制测试程序,然后保存并退出。
现在,编译使用g++ -std=c++11 -c main.cpp-不知道C ++ 11的 要求 ,但我用nullptr的话,我需要它。你可能需要将GCC升级到4.7版本,或即将推出的4.8版…信息上这里。
g++ -std=c++11 -c main.cpp
nullptr
然后,如果您手动键入程序或试图“太聪明”而无法解决某些错误,则修复错误,然后使用此怪物将其链接!g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi如此一来,在“安装生成依赖项”部分中,您可能还需要检查是否还安装了GL,GLU,X11 Xxf86vm(无论是什么)Xrandr posix- thread和Xi(无论是什么) 开发 库。也许也要更新图形驱动程序,我认为GLFW 3可能需要OpenGL版本3或更高版本?也许有人可以确认?-ldl -lXinerama -lXcursor如果要获取未定义的引用dlclose(贷记为@ user2255242),则可能还需要添加链接器选项才能使其正常工作。
g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
-ldl -lXinerama -lXcursor
dlclose
而且,是的,我确实确实需要那么多-l!
-l
希望这些信息是正确的,一切对您都有用,并且您喜欢编写GLFW测试程序。也希望本指南对将来像我 今天 一样挣扎的一些人有所帮助或将对他们有所帮助!
顺便说一下,所有标签都是我在stackoverflow上搜索的东西,目的是寻找不存在的答案。(直到现在。)如果您的位置与我自己相似,希望它们是您要搜索的内容。