【问题标题】:Compile OpenGL application from Windows on Linux在 Linux 上从 Windows 编译 OpenGL 应用程序
【发布时间】:2013-11-28 06:09:42
【问题描述】:

我的朋友制作了 OpenGL 图形引擎,但他在 Windows 上工作。我想用它编译项目。
我安装了所有必需的带有标题的库,但现在问题在于链接(代码中的项目::块)。我找到了/usr/lib/libSOIL.a/usr/local/lib/libglfw3.a 的路径,但是呢:

  • C:\Program Files (x86)\CodeBlocks\MinGW\lib\libopengl32.a
  • C:\Program Files (x86)\CodeBlocks\MinGW\lib\assimp_debug-dll_win32\assimp.lib

另外,我必须在项目文件中修改什么来编译它?它需要:glfw3, glm, gl3w.h, assimp, SOIL(这是我从 .hpp 文件中得到的)。我安装了所有标题(下载的源和make && make install)...

我尝试使用 g++ 从终端编译它,但我不知道库的开关。

目前情况:

$ g++ Camera.o Entity.o Frustum.o gl3w.o Light.o Material.o Mesh.o Model.o ModelPart.o Shader.o Texture.o Utilities.o ../main.o -o main -L/usr/local/lib/libglfw3.a -lX11 -lXext -lXt -lSM -lGLU -lglut -lSOIL
/usr/bin/ld: gl3w.o: 未定义对符号“glXGetProcAddress”的引用
/usr/bin/ld:注意:“glXGetProcAddress”在 DSO /usr/lib/nvidia-313-updates/libGL.so.1 中定义,因此请尝试将其添加到链接器命令行
/usr/lib/nvidia-313-updates/libGL.so.1:无法读取符号:无效操作
collect2:错误:ld 返回 1 个退出状态

(我知道我在命令行中添加了太多库)

编辑
添加了-lGL-ldl,出现了一些问题。现在,我将尝试使用 makefile 编译它...

【问题讨论】:

  • 我认为您的问题不在于如何在 Linux 中使用 OpenGL 进行编译,而是普遍缺乏对 GCC 构建工具链在 Linux 中的工作方式的理解。只是将 Makefile 扔进去并不能真正解决这个问题。
  • 现在解决了,只是库等方面的大量错误。此外,Makefile 确实是比 C::B 项目更好的解决方案...

标签: c++ linux opengl g++


【解决方案1】:

libopengl32 -> libGL.a

assimp -> libassimp.a ?

您必须提供用于编译它的 Makefile。

【讨论】:

  • 但是来自哪个目录?我有一些 libGL.so,没有 libassimp.a :( 请查看我的编辑,我添加了来自 ld 的错误。
  • 没有libGL.a。您只需指定 -lGL 链接器标志即可链接到 libGL.so。
  • @aso 您似乎忘记与 GLFW 链接,请在命令行中指定 -lglfw3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多