Самым безопасным было бы дать им .so и соответствующий ему заголовок со стабильным двоичным API. Чтобы быть бинарно стабильным, этот API не должен принимать или возвращать любые типы std::
, такие как std::string
или std::vector<>
, поскольку двоичная компоновка типов std::
может изменяться от версии к версии.
И он должен быть статически связан с libstdc ++ и libgcc_s, чтобы вашим клиентам не приходилось связываться с определенной версией libstdc ++.
Вы также можете упаковать все свои файлы .o в один .a для удобства, чтобы при добавлении нового файла .o вашим клиентам не приходилось обновлять свои make-файлы для связи с новым .o.