最近,我不得不在PC上重新安装Linux
Mint。我重新安装了所有库,例如GLFW,并遇到了从未见过的错误。不幸的是,由于无法找到对我有用的修复程序,我的google-
fu技能似乎无法弥补这个错误。旁注:这些程序在我的旧安装中可以很好地编译,并且在运行Linux Mint 17.2的笔记本电脑上也可以完美地编译。
这是我用来编译的编译语句:
g++ -std=c++11 main.cpp -o out -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
这是终端向我吐出的东西:
/usr/bin/ld: //usr/local/lib/libglfw3.a(glx_context.c.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libdl.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
所以,如果有人能告诉我为什么我得到这个/或如何解决它,那绝对是惊人的!提前感谢您的任何帮助。
编辑:我已经两次重新安装Mint,以尝试解决此问题。每次都出现。
编辑2:我一直在摆弄,但仍未发现问题。
看起来缺少的符号来自libdl
。
作为额外的奖励,我将给您一个Makefile。请记住要使用制表符缩进,不能缩进,否则Makefile将不起作用。
all: out
clean:
rm -f out *.o
.PHONY: all clean
CXX = g++
CPPFLAGS =
CXXFLAGS = -std=c++11 -Wall -Wextra -g
LIBS = -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -pthread -lXi -ldl
LDFLAGS =
out: main.o
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
但是,如果使用,会容易得多pkg-config
。我不知道正确的命令是什么(我现在不在Linux上,所以我无法检查),但是它看起来像这样:
packages = glfw3
CPPFLAGS := $(shell pkg-config --cflags $(packages))
LIBS := $(shell pkg-config --libs $(packages))
这样,您甚至不必知道自己需要-ldl
,因为pkg-config
它将为您解决。这是标准的处理方式。
尝试pkg-config --libs glfw3
自己运行以查看输出。如果尚未安装,请运行sudo apt-get install pkg- config
。
问题内容: 我对使用Windows的Linux(使用Ubuntu 14.04 LTS 64位)非常陌生,并且正尝试移植到我现有的CUDA项目上。 通过链接时 我遇到以下错误: 答案似乎与本文中的解决方案密切相关(奇怪的链接错误:命令行中缺少DSO),尽管鉴于我对Linux的经验不足,所以我无法使其适应我的问题。 关于可能的问题有什么想法? 这是编译期间的完整输出:https : //gist.gi
问题内容: 我正在尝试像这样编译C ++程序: 但是我收到以下错误: 我不知道这个错误是什么意思。任何帮助将不胜感激。 问题答案: DSO在这里表示动态共享对象;由于错误消息指出命令行中缺少该消息,因此我想您必须将其添加到命令行中。 也就是说,尝试添加到命令行。
下面是完整的输出:-
当我尝试注册以下代码时,会出现此错误:code 下图中出错
我使用Angular 7和Orientdb 3.0.14。我想连接到我的数据库demodb在localhost。 这是我的命令代码: 但我在控制台上有一个错误: HttpHeader 地图(7)大小:(...)原型:地图[[条目]]: 数组(7)0:{“访问控制允许源”= 数组(1)}键:访问控制允许方法值:[POST, GET, OPTIONS, DELETE] 2:{“访问控制最大年龄”= 3
尝试使用Visual Studio Code上的npm start命令运行节点应用程序时收到此错误。非常感谢任何帮助! 这是我包裹里的东西。json文件: 这是我运行代码时终端上的消息: