gpt4 book ai didi

linux - 我可以强制编译器将我的共享库也放入二进制文件中吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:53 25 4
gpt4 key购买 nike

我确实使用 glfw3、glm、opengl 和 glut 制作了一个 OpenGL 程序。我正在使用 Ubuntu 17.04 和 G++ 编译器。我这样编译:

g++ -o main Main.cpp FastNoise.cpp shader.cpp texture.cpp -lGL -lGLU -lglfw3 
-lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXinerama -lXcursor -lGLEW

请注意,这是我执行的旧编译命令,因为我目前无法访问我的工作电脑。我试图在不同的 Linux 系统上执行生成的 main,它告诉我由于缺少共享库而失败。有什么简单的方法可以解决这个问题吗?我读过我需要静态链接我的库,但我不知道它们位于何处。我只有这样的:

sudo apt-get install libgle...

最佳答案

应该有可用的 GLU、glfw 和 GLEW 的静态可链接版本。 永远不要静态链接 GL 或任何 X11 的东西。原因很简单:libGL.so 实际上包含了部分 GPU 驱动程序,因此它必须与内核模块和 X 服务器模块的版本相匹配才能工作。因此它必须动态链接。由于 libGL.so 还包含所有与 X11 库交互的 GLX 内容,因此这些 X11 库也必须动态链接。

幸运的是,OpenGL/GLX/X11 库要求已写在 Linux-Software-Base/Desktop 中,因此在任何运行基于 X11 的桌面的系统上都可以使用这些东西。

关于linux - 我可以强制编译器将我的共享库也放入二进制文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46836068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com