编译器无法链接/查找GLFW

时间:2018-09-02 10:08:32

标签: c++ linux

我正在尝试运行一个经过修改的程序,该程序可以在cpp-pointcloud.cpp中找到。我很难建立它。

现在我的文件结构是:

-pointcloud.cpp
-librealsense/
    -examples
        -example.hpp

我正在使用命令构建它:

g++ -std=c++11 pointcloud.cpp -lrealsense -lopencv_core -lopencv_imgproc -lopencv_highgui -o ir

pointcloud.cpp文件的导入如下:

 // License: Apache 2.0. See LICENSE file in root directory.
 // Copyright(c) 2015 Intel Corporation. All Rights Reserved.

 #include <librealsense/rs.hpp>
 #include <librealsense2/rs.hpp>

 #include "librealsense/examples/example.hpp"

 #include <chrono>
 #include <vector>
 #include <sstream>
 #include <iostream>
 #include <algorithm>

它们是:

#pragma once

#define GLFW_INCLUDE_GLU
#include <GLFW/glfw3.h>
#include <vector>

#include <string>
#include <sstream>
#include <iostream>
#include <algorithm>

在example.hpp文件中。

我的问题是,它似乎找不到glfw文件。我收到一堆错误,例如:

pointcloud.cpp:(.text+0xdf5): undefined reference to `glPopMatrix'

这对我来说很奇怪,因为我确信我已经安装了GLFW3软件包。而且我相信其中包括使用尖括号在您的操作系统上搜索已安装的软件包。

我已经成功运行了此命令:

sudo apt-get install libglfw3 libglfw3-dev

我尝试添加

    #include <GLFW/glfw3.h>

到pointcloud.cpp文件,但实际上给了我更多错误!

我想念我在概念上误会了一些东西,所以如果你们中的任何一个可以指出我正确的方向,那将非常感谢。

1 个答案:

答案 0 :(得分:0)

您必须将GLFW与pkg-config关联,请参见 How do I link GLFW

$ gcc `pkg-config --cflags glfw3` -o foo foo.c `pkg-config --static --libs glfw3`

您可以使用locatewhereis(使用sudo updatedbhttps://unix.stackexchange.com/questions/194088/how-to-check-if-a-shared-library-is-installedfind(/www.lifewire.com来更新数据库)来查找库。 / uses-of-linux-command-find-2201100),即

sudo updatedb  ( may take some time ... )
locate libglfw

sudo find /usr/lib -name '*libglfw*'

还可能使用libglfw检查ldd所需的所有依赖关系