Неизвестная ошибка компоновщика G CC, но успешная сборка - PullRequest
2 голосов
/ 26 января 2020

Я пытаюсь скомпилировать программу, которая ссылается на библиотеку FMOD в Eclipse C / C ++ IDE. Я даже не включил ни один из заголовков библиотеки, я только добавил общую библиотеку к зависимостям проектов и получаю следующие ошибки компоновки:

Building target: Adventum
Invoking: GCC C++ Linker
g++-8 -L"/home/jkmcameron/Workplace/git/Adventum/Adventum/libs/GLFW" -L"/home/jkmcameron/Workplace/git/Adventum/Adventum/libs/Python" -L"/home/jkmcameron/Workplace/git/Adventum/Adventum/libs/FMOD" -o "Adventum"  ./src/adventum/graphics/Display.o  ./src/adventum/Main.o ./src/adventum/ScriptLoader.o   -lglfw3 -lpython3.8 -lfmodL -ldl -lpthread -lX11 -lvulkan
/usr/bin/ld: /home/jkmcameron/Workplace/git/Adventum/Adventum/libs/FMOD/libfmodL.so: .dynsym local symbol at index 2 (>= sh_info of 2)
/usr/bin/ld: /home/jkmcameron/Workplace/git/Adventum/Adventum/libs/FMOD/libfmodL.so: .dynsym local symbol at index 3 (>= sh_info of 2)
/usr/bin/ld: /home/jkmcameron/Workplace/git/Adventum/Adventum/libs/FMOD/libfmodL.so: .dynsym local symbol at index 4 (>= sh_info of 2)
Finished building target: Adventum

Поиск .dynsym local symbol at index ... дал мне нет подсказки, даже если я расширяю область действия за пределы библиотеки FMOD и ищу эту ошибку, в общем, я не вижу много хитов в Google, как если бы эта ошибка была сделана специально для меня. Это не должно быть проблемой с двоичными файлами, потому что я попробовал несколько версий, доступных на веб-сайте FMOD, и все они выдают одну и ту же ошибку, и я не вижу, чтобы кто-то еще жаловался на ошибки двоичного выброса во время ссылки на Linux ,

Возможно, Eclipse приложил руку к этому беспорядку, но я использую цепочку инструментов GNU, и даже когда я устанавливаю Eclipse на «остановку при первой ошибке сборки», он все равно успешно компилируется с этими ошибками, как будто они фантомные ошибки.

Программа работает очень хорошо, и я мог бы даже игнорировать ошибки, если бы мне было лень. В основном я ищу какой-либо намек или подсказку о том, что означают эти ошибки, потому что для меня инструменты компиляции и компоновки C ++ - это человек, стоящий за кулисами.

1 Ответ

2 голосов
/ 26 января 2020

Это всего лишь предупреждение, см. https://sourceware.org/bugzilla/show_bug.cgi?id=25135

Похоже, что у FMOD есть недопустимая таблица символов, хотя, кажется, это не повредит чтению этого большого отчета, только немного загадочное предупреждение (которое не содержит ключевого слова "предупреждение").

Компоновщик золота не выдает это предупреждение, вы можете включить его с помощью -fuse-ld=gold

...