Есть ли способ заставить gcc обнаружить дублированный символ в статических библиотеках по сравнению с основным кодом (или другой статической библиотекой?)
Вот ситуация:
main.c ошибочно содержал определение функции, например, с подписью uint foohash(const char*)
foo.c также содержит определение функции с подписью uint foohash(const char*)
foo.c и другие исходные файлы компилируются в статическую библиотеку утилит, в которую ссылается основная программа, т.е. что-то вроде:
gcc -o main main.o util.o -L ./libs -lfooutils
Итак, теперь main.o и libs / libfooutils.a содержат функцию foohash. Предположительно, компоновщик нашел этот символ в main.o и не стал искать его где-либо еще.
Есть ли способ заставить gcc обнаружить такую ситуацию?