Вы проверили порядок ссылок? Это стало более строгим в последних версиях GCC.
Например, распространенная проблема вызвана тем, что:
g++ -lX11 -lSuperLibrary awesomeApp.cpp
вместо этого:
g++ awesomeApp.cpp -lX11 -lSuperLibrary
Также имеет значение, в каком порядке расположены флаги библиотеки, если они взаимозависимы.
Существуют флаги для многопроходной библиотеки, которые могут помочь вам решить вашу проблему. Чтобы сделать то же самое, что и выше, но с «компоновкой» библиотек компоновщика и созданием рекурсивной ссылки на них (за счет снижения производительности компоновщика) вы можете сделать что-то вроде следующего:
g++ awesomeApp.cpp -Wl,--start-group -lX11 -lSuperLibrary -Wl,--end-group
Где -Wl,<option>
передает параметр компоновщику ... в этом случае --start-group
и --end-group
.
Отличная аналогия важности порядка ссылок здесь
Надеюсь, это поможет.