新しい 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 ライブラリを拒否しているようです。これについて少し調べたところ、gcc を --enable-shared で再コンパイルする必要があるようです。
これは本当ですか?
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'
編集私もclangでコンパイルしました->同じ結果。