История изменений
Исправление firkax, (текущая версия) :
Направлять вручную симлинк это примерно то же самое что и LD_PRELOAD прописывать. А не вручную - ну можно и сам .so менять. Но тут речь о том чтобы для конкретной запущеной проги выбиралась нужная реализация в зависимости от того, есть ли в её дереве зависимостей хоть одно упоминание тяжёлого варианта библиотеки или можно обойтись лёгким. Ну или хотя бы не в дереве, а у главного бинарника.
И кстати - а зачем разделять многопоток и однопоток ? Не проще внутри библиотеки это разрешать ? Т.е. сделать внутри библиотеки две реализации и звать желаемую.
Можно конечно (более того, мультитред реализация очевидно может работать и в синглтреде безо всяких фиксов), но например у многопоточной есть зависимость от libpthread.so (и выйдет что чисто сингл-тред прога будет его требовать), да и просто лишние байты в памяти тратятся на ненужные ветки кода.
Исходная версия firkax, :
Направлять вручную симлинк это примерно то же самое что и LD_PRELOAD прописывать. А не вручную - ну можно и сам .so менять. Но тут речь о том чтобы для конкретной запущеной проги выбиралась нужная реализация в зависимости от того, есть ли в её дереве зависимостей хоть одно упоминание тяжёлого варианта библиотеки или можно обойтись лёгким. Ну или хотя бы не в дереве, а у главного бинарника.
И кстати - а зачем разделять многопоток и однопоток ? Не проще внутри библиотеки это разрешать ? Т.е. сделать внутри библиотеки две реализации и звать желаемую.
Можно конечно, но например у многопоточной есть зависимость от libpthread.so (и выйдет что чисто сингл-тред прога будет его требовать), да и просто лишние байты в памяти тратятся на ненужные ветки кода.