2013-05-19 166 views
4

在我的新的Linux发行版(Fedora的),如果我尝试编译了我与GLFW写的东西,我得到以下错误:启用共享库

:-1: error: note: 'XF86VidModeQueryExtension' is defined in DSO /lib64/libXxf86vm.so.1 so try adding it to the linker command line 

我可以通过添加-lXxf86vm但我从来没有解决这个问题不得不在我以前的Linux发行版中包含这个。现在我必须添加6个lib名称。

这是怎么回事?似乎我的编译器拒绝.so库?我研究了一下,似乎我必须使用--enable-shared重新编译我的gcc。

这是真的吗?

这是我的日志从GCC:

20:32:44: Running steps for project sgl... 
20:32:44: Configuration unchanged, skipping qmake step. 
20:32:44: Starting: "/usr/bin/make" 
g++ -c -m64 -pipe -std=c++11 -g -Wall -W -fPIE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -I../../Qt5.0.2/5.0.2/gcc_64/mkspecs/linux-g++-64 -I../kantaki-sgl -Ishaders -I. -o camera.o ../kantaki-sgl/camera.cpp 
../kantaki-sgl/camera.cpp:3:6: warning: unused parameter 'pos' [-Wunused-parameter] 
../kantaki-sgl/camera.cpp:7:6: warning: unused parameter 'ori' [-Wunused-parameter] 
../kantaki-sgl/camera.cpp:14:6: warning: unused parameter 'window' [-Wunused-parameter] 
../kantaki-sgl/camera.cpp:14:6: warning: unused parameter 'action' [-Wunused-parameter] 
g++ -m64 -Wl,-rpath,/home/maik/Qt5.0.2/5.0.2/gcc_64 -o sgl main.o filereader.o shader.o camera.o -lGL -lglfw3 -lglimgD -lglloadD 
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_clipboard.c.o): undefined reference to symbol 'XConvertSelection' 
/usr/bin/ld: note: 'XConvertSelection' is defined in DSO /lib64/libX11.so.6 so try adding it to the linker command line 
/lib64/libX11.so.6: could not read symbols: Invalid operation 
collect2: error: ld returned 1 exit status 
make: *** [sgl] Error 1 
20:32:45: The process "/usr/bin/make" exited with code 2. 
Error while building/deploying project sgl (kit: Desktop) 
When executing step 'Make' 

编辑我也铿锵编译它 - >相同的结果。

+0

您使用哪种发行版? – hek2mgl

+0

我现在使用的是fedora。 –

+0

你运行过'ldconfig'吗?你自己编译过这个库吗? –

回答

3

这是Fedora的DSO链接策略的一个变化,请看official documentation

+0

哇!这是一个长期的变化。希望其他发行版将随之而来。 –

+0

所以这基本上意味着我必须显式链接每个共享库? –