2009-08-21 3 views
5

У меня есть проект C++ (g ++/raw Makefile), предназначенный для linux, я использовал для статической привязки всего, что отлично работало целую вечность. Теперь я хочу создать двоичные файлы как статически, так и динамически связанные. Следующая команда используется в моем Makefile для создания динамической библиотеки (например, libtest):Как использовать мою собственную динамическую библиотеку в linux (Makefile)

$ (CXX) -shared -Wl, -soname, libtest.so.1 -o libtest.so.1.0.0 $ (LIBTEST_OBJS)

выход libtest.so.1.0.0 который имеет так называют libtest.so.1

я нашел по крайней мере символической ссылки libtest.so -> libtest.so.1.0.0 требуется связать мою клиентскую программу, которая фактически использует созданную выше библиотеку libtest.so.1.0.0.

Здесь мой вопрос, хочу ли я создать свое программное обеспечение, каков стандартный способ управления вышеупомянутой символической ссылкой? Ясно, что я не хочу этого лишнего материала в моем исходном каталоге, но мне нужно построить мой клиентский двоичный файл, я должен создать его как временную ссылку для создания клиента, а затем просто удалить его, когда это будет сделано? или я должен создать каталог для размещения библиотеки .soso и его ссылок и оставить все там, пока я не «сделаю установку», чтобы установить их в другие указанные каталоги? Будет здорово, каков стандартный способ сделать это.

Или, может быть, неправильный способ генерации библиотек? должен ли я просто генерировать libtest.so (как фактическую библиотеку, а не ссылку), чтобы связать мой исполняемый файл, а затем переименовать библиотеку и создать эти ссылки при выполнении `` make install ''?

любой ввод будет оценен. :)

ответ

1

Конечно, не генерировать libtest.so как реальную ссылку. Обычно установка файлов разработки разделяемой библиотеки устанавливает файлы .h и создает символическую ссылку libtest.so как часть некоторого сценария установки, который вы должны писать.

Если вы не устанавливаете файлы разработки, а используете только библиотеку в процессе сборки своего двоичного файла, вы просто создаете ссылку symbolik из вашего файла makefile.

Здесь не так уж много стандарта, некоторые предпочитают строить артефакты в отдельном каталоге сборки, Некоторым все равно, если он создан в исходном каталоге. Я бы построил на отдельный каталог, но сохранил исходный каталог в любом .o/.so/исполняемом файле.

Вы можете найти полезную информацию here

1

Мое предложение заключается в использовании libtool, который обрабатывает ситуации, как это.

+0

+1 Использование libtool упростит, когда вы в конечном итоге решите перенести его из Linux на что-то еще - libtool обрабатывает все зависящие от платформы проблемы разделяемых библиотек. –

Смежные вопросы