GCC не связывает библиотеки. Компилируется, но в результирующей библиотеке отсутствуют необходимые ссылки

Возможный дубликат:
Ошибки компоновщика GCC C ++: неопределенная ссылка на vtable for XXX, неопределенная ссылка на ClassName :: ClassName ()

Хорошо, поэтому я пытаюсь скомпилировать библиотеку общих объектов, состоящую из 2 объектных файлов и статической библиотеки. Я делаю ссылки на библиотеки, но в моих объектах фактически используется только Lua, остальные — в файле .a.

Вот сгенерированный IDE шаг связывания:

g++ -shared  obj/Debug/GL/Window/Window.o obj/Debug/main.o   -o bin/Debug/libLOOGL.so -lX11 -lXrandr -lGL -llua5.2  /home/matt/Desktop/Development/LOOGL/lib/bin/OOGL.a

Вот вывод ldd для результата:

ldd loogl.so
linux-vdso.so.1 =>  (0x00007fff30b3e000)
liblua5.2.so.0 => /usr/lib/x86_64-linux-gnu/liblua5.2.so.0 (0x00007f521b53e000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f521b23e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f521b027000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f521ac68000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f521a96e000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f521a769000)
/lib64/ld-linux-x86-64.so.2 (0x00007f521b991000)

Необходимые библиотеки не связаны и результат не запустится, отсутствуют ссылки.

2

Решение

Порядок библиотек в строке ссылок важен:

Пытаться:

g++ -shared  obj/Debug/GL/Window/Window.o obj/Debug/main.o   -o bin/Debug/libLOOGL.so /home/matt/Desktop/Development/LOOGL/lib/bin/OOGL.a -lX11 -lXrandr -lGL -llua5.2
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]