【问题标题】:g++ -lglfw3 "Undefined reference"g++ -lglfw3“未定义的引用”
【发布时间】:2016-07-21 22:37:06
【问题描述】:

我正在尝试用 g++ 编译和链接我的 c++ GLFW3 程序, 这是我写的一个简单的测试程序:

#include <GLFW/glfw3.h>
#include <iostream>

int main()
{
    if (!glfwInit())
        std::cout << "glfwInit(); // ERROR" << std::endl;
    return 0;
}

我在 ubuntu 14.04 上使用这个命令:g++ src/main.cpp -lglfw3, 它给了我以下非常长的错误列表:http://pastebin.com/p58k3x41

【问题讨论】:

  • 你没有忘记几个库吗? stackoverflow.com/q/17559280/560648
  • 我不知道,我是 linux 上的 g++ 新手,我习惯于 windows 上的 Visual Studio,我可以将 glfw3.dll 添加到包含和链接路径中。我假设将-lglfw3 添加到 g++ 是在做同样的事情。我尝试使用链接中建议的命令进行编译,g++ src/main.cpp -lglfw3 -lm -lGL -lGLU,但它仍然给我带来了大量错误。
  • 您是否尝试阅读文档?因为通过猜测编程是行不通的。
  • 我确实快速浏览了文档,但没有发现任何用处。我注意到添加-lm -lGL -lGLU 确实减少了错误的数量,所以经过一番摆弄后,我发现这个命令g++ src/main.cpp -lglfw3 -pthread -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl -lXcursor 编译时没有错误,我不完全理解为什么它需要所有额外的库,但它工作太快了!
  • 不仅仅是“快速浏览”。按照其说明了解如何构建您的软件。仔细而深入地研究它。利用我们的时间不能代替进行基础研究!!

标签: c++ linker g++ glfw


【解决方案1】:

g++ src/main.cpp -lglfw3 -pthread -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl -lXcursor 编译对我来说没有任何错误,我不完全理解为什么它需要所有这些额外的库,但它工作得如此欢呼!

【讨论】:

  • 您需要链接所有这些库,因为您不仅需要链接您的代码调用的库,还需要链接您链接的任何库调用的所有库。当图书馆需要大量其他人时,pkg-config 可以为您找到它们。 GLFW 支持pkg-config。在Building programs that use GLFW 中阅读 在 OS X 或其他 Unix 上使用 pkg-config
【解决方案2】:

我最近遇到了同样的错误,在我的机器上工作的命令行是:

gcc -o myprog myprog.c -lglfw3 -lGL -lX11 -lXxf86vm -lpthread -lXrandr -lXi -lXinerama -lXcursor -lm
                               ^^^^   

还要考虑这取决于您编译glfw3 库的方式(共享或静态请参阅文档),您将获得glfw3.so 免费二进制文件!

【讨论】:

    猜你喜欢
    • 2020-08-13
    • 2014-08-05
    • 2010-09-23
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2013-02-03
    相关资源
    最近更新 更多