Я пытаюсь добавить проверку работоспособности на этапе соединения. В частности, у меня есть программы, которые статически связывают библиотеки. Некоторые программы ограничены набором библиотек, которые разрешено связывать, а другие нет. Например, у меня есть две программы соответственно food.c
и fruits.c
, и у меня есть две библиотеки (для которых у меня есть источник) apple.a
и broccoli.a
. Между apple.a
и broccoli.a
.
нет никакой зависимости
Есть ли способ, которым я могу изменить свой источник и источник библиотек так, чтобы компоновщик позволил мне связать apple.a
и broccoli.a
в food.c
, и позволит мне связать apple.a
в fruits.c
, но выдает ошибку компоновщика при попытке загрузить apple.a
и broccoli.a
(или просто broccoli.a
) в fruits.c
? Предположим, что в моем источнике нет #include
каких-либо заголовков в библиотеках, которые они связывают, поскольку они ошибочно связаны, оставлены в удаленном коде, прототипы функций объявлены вручную и т. Д.
Было бы неплохо, если бы я мог как-то пометить эти библиотеки таким образом, чтобы моя программа могла отклонить определенный тег.
Конкретный компилятор, который я использую, не поддерживает #pragma poison
, который был действительно единственным полезным инструментом, который я нашел в моем поиске. Я догадываюсь, что со слабыми символами можно что-то придумать, но я не совсем уверен, что и как.
Я также не верю, что использование #define
поможет мне, так как я понимаю, что это только помешает мне #include
загружать определенные файлы, но если я ошибаюсь в этом, то это также может быть штрафом решение.