В Linux / ELF вы можете передать опцию -export-dynamic
компоновщику (-rdynamic
в драйвере компилятора gcc
), чтобы символы из исполняемого файла экспортировались в общие объекты.
В вашей библиотеке будет фиктивная реализация print
, которая будет скрыта реализацией в вашем исполняемом файле, так как исполняемый файл обычно ищется перед общими объектами для разрешения символов.
Это имеет тот недостаток, что он не очень мелкозернистый, вы можете переопределить какой-то символ, который вы не собирались.Более точный вариант - создать список символов для экспорта в виде:
{
print;
<other symbols>
};
и передать этот список компоновщику, например, из gcc: -Wl,--dynamic-list=<file with list of symbols>