Большинство компиляторов / компоновщиков оптимизируют использование неиспользуемых символов. Если вы работаете в системе * nix, вы можете попробовать использовать команду «nm» для всех объектных файлов, отфильтровать ее и отсортировать, чтобы получить список всех экспортируемых функций, определенных этими объектными файлами.
nm *.o | grep "^[0-9a-f]* T " | sed 's/^[0-9a-f]* T //' | sort -u > symbols_in.txt
Я полагаю, что вы можете сделать то же самое в последних двоичных файлах.
Если вы затем разберете два набора результатов, вы получите список всех неиспользованных экспортируемых функций.
Обратите внимание, что некоторые функции могут использоваться кодом, который исключен в результате условной компиляции. Например. переключатель #ifdef, чтобы сказать, что на платформе A используйте такую-то встроенную функциональность, а на другой платформе - свою собственную версию функции, потому что нет встроенной или стандартной библиотеки, или она не работает должным образом.