Ну, один из способов, который я могу придумать, - это сначала скомпилировать файлы .o для своей библиотеки.
Затем используйте инструмент, подобный nm
(распространенный в * nix системах), чтобы получить все символы, в nm
все «внешние» (то есть те, которых нет в этом .o) имеют тип U (может отличаться для не-GNU версий nm
, см. Вашу документацию).
Если ваша библиотека состоит из одного исходного файла, то это просто, почти все символы типа U будут либо функцией, найденной в другой библиотеке, либо будут не разрешены во время компоновки. Это немного сложнее, если в вашей библиотеке будет более одного исходного файла, поскольку у вас будут зависимости между исходными файлами.
Итак, теперь у вас есть средство для создания потенциального списка неразрешенных внешних объектов, а затем вы можете создать «test_stub.c», в котором есть символы заглушки для каждого из них, которые можно заполнить примерно так:
void some_func() { abort(); }
, где some_func
- это неразрешенное внешнее. Скомпилируйте и свяжите это со своей библиотекой, и все вызовы должны привести к прерыванию.