Как это объяснить?




g++ -lGL -lGLEW -lglfw -lpthread temp.cpp

/tmp/ccoXvv4n.o: In function `main':
temp.cpp:(.text+0x10): undefined reference to `glfwInit'
temp.cpp:(.text+0x1f): undefined reference to `glfwWindowHint'
temp.cpp:(.text+0x2e): undefined reference to `glfwWindowHint'
temp.cpp:(.text+0x3d): undefined reference to `glfwWindowHint'
temp.cpp:(.text+0x5e): undefined reference to `glfwCreateWindow'
temp.cpp:(.text+0x94): undefined reference to `glfwMakeContextCurrent'
temp.cpp:(.text+0x9a): undefined reference to `glewExperimental'

ldconfig -p | grep -i "glew\|glfw\|" (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/ (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/ (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/ (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/ (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/ (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/ (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/ (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/

ld --verbose | grep -o "SEARCH_DIR(\"=/usr/lib/x86_64-linux-gnu\")"


objdump -T /usr/lib/x86_64-linux-gnu/ | grep glfwInit

0000000000005b10 g    DF .text  000000000000007f  Base        glfwInit

Если поменять g++ на clang++-8, то всё компилируется

kde neon

Как это объяснить?

Dependency hell.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от yachmenka

man gcc:

-l library
    It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified.  Thus, foo.o -lz bar.o searches library z after file foo.o but before bar.o.  If bar.o refers to functions in z, those functions may not be loaded.
xaizek ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.