Как создавать динамические библиотеки в C++ под Linux?
Всем привет!
Подскажите пожалуйста, как в Linux на C++ реализовать аналог dll библиотеки. То есть у меня есть программа, я подключаю к ней библиотеку, затем спустя какое то время изменяю логику работы функций в подключенной библиотеке и без перекомпиляции основной программы все работает с новым функционалом.
Я попробовал сделать так. Создал класс mac.cpp - это основная программа. И создал библиотеку mylib без метода main, скомпилировав ее ключом -c.
Затем собрал программу: g++ mac.cpp mylib.o . Все замечательно работает, но если пересобрать отдельно mylib.o то эти изменения не отражаются в скомпилированном приложении.
gcc позволяет создавать статические и динамические библиотеки. Используйте параметр линковки -shared и на выходе получите файлик .so - что в linux и есть аналог .dll
Вот тут все параметры линковки
Ну и примерчик: gcc *.o -shared -o file.so [-l<libraries>]
Спасибо! +1
Все работает (только вместо gcc я использовал g++). Одно замечание, чтобы заработало ваше приложение после компиляции необходимо добавить переменную окружения export LD_LIBRARY_PATH=/usr/local/lib
Спасибо! На всякий случай приведу полный пример: g++ mac.cpp lib/mylib.so -L ~/Documents/projects/lib/mylib.so Теперь если пересобрать mylib.so не нужно пересобирать всю программу.