Я пишу довольно большую библиотеку общих объектов С++ и столкнулся с небольшой проблемой, которая отлаживает боль:
Если я определяю функцию/метод в файле заголовка и забываю создать для него заглушку (во время разработки), так как я создаю как общую библиотеку объектов, а не исполняемый файл, при компиляции не возникает ошибок я забыл реализовать эту функцию. Единственный способ узнать, что что-то не так, - это время выполнения, когда приложение, связанное с этой библиотекой, падает с ошибкой "undefined".
Я ищу простой способ проверить, есть ли у меня все символы, которые мне нужны во время компиляции, возможно, что-то, что я могу добавить в свой Makefile.
Одно из решений, которое я придумал, - запустить скомпилированную библиотеку через nm -C -U
, чтобы получить список всех ссылок undefined. Проблема заключается также в том, что список всех ссылок содержится в других библиотеках, таких как GLibC, которые, конечно же, будут связаны с этой библиотекой, когда окончательное приложение будет объединено. Можно было бы использовать вывод nm
to grep
через все мои файлы заголовков и посмотреть, соответствует ли какое-либо из названий.. но это кажется безумным. Наверняка это не необычная проблема, и есть лучший способ ее решения?