Я работаю в среде Linux с C ++, используя компилятор GCC.
В настоящее время я работаю над модификацией и обновлением большого ранее существующего тела кода. Как часть этого, было необходимо добавить довольно большое количество небольших ссылок по всему коду в различные места, чтобы связать вещи вместе, а также добавить в несколько новых библиотек внешнего кода. Существует также довольно большая и сложная структура Make-файлов, связанных с файлом configure.ac для обработки процесса сборки.
После запуска процесса сборки все компилируется без проблем, но возвращается с ужасной ошибкой компоновщика при попытке использовать вновь добавленную библиотеку пользовательского кода, которую мы создали. Теперь мы прошли через огромный объем кода с мелким гребенком, ища несоответствия правописания, проверили порядок включения всех библиотек в процесс сборки и проверили, что созданные .o файлы содержат то, что нам нужно, используя dumps, и все как и где они должны быть. Мы также протестировали библиотеку отдельно, и проблема определенно не в этом.
Короче говоря, мы попробовали большинство вещей, которые вы обычно должны делать в этих сценариях.
Существует ли инструмент для C ++, который может автоматически обнаруживать ошибки компоновщика, аналогично cppcheck или splint (оба из которых мы запустили безрезультатно), который мог бы здесь помочь?