#ubuntu #makefile #cmake #build
#ubuntu #makefile #cmake #сборка
Вопрос:
Я работаю с https://github.com/shadowsocks/shadowsocks-libev
Найдено, что в ubnutu apt-get есть библиотека *-dev
libshadowsocks-libev-dev - lightweight and secure socks5 proxy (development files)
Но с make по умолчанию он не сгенерировал so, как я ожидал, просто исключил двоичные файлы
Кроме того, я попытался выполнить поиск grep в исходном коде, но все еще не могу понять это
Итак, может ли кто-нибудь рассказать мне, как собрать libshadowsocks-libev-dev, более конкретно libshadowsocks-libev.so
Помимо этого, для всех этих пакетов *-dev существуют ли какие-либо формальные шаги сборки?
Комментарии:
1. «Но с помощью make по умолчанию он не сгенерировал so, как я ожидал, просто исключил двоичные файлы» — проект фактически создает библиотеку shared (
.so
) . Это выполняется этой строкой в [src/CMakeLists.txt ]:add_library(shadowsocks-libev-shared SHARED ${LIBSHADOWSOCKS_LIBEV_SOURCE})
.2. @Tsyvarev Спасибо! Я мало знал о CMake, поэтому пропустил это. Наконец, я обнаружил, что он управляется флагом. После изменения вручную это работает
Ответ №1:
Не похоже, что есть какие-то очень конкретные рекомендации для -dev
пакетов в целом. Человек, создавший пакет, создал a debian/rules
и его вспомогательную инфраструктуру, которая создает два или более пакетов из исходного исходного пакета, и решил поместить некоторые из этих файлов в -dev
пакет, чтобы люди, которым нужен только двоичный файл, могли установить только двоичный файл, а люди, которые хотят больше, могут установить оба пакета.
Как правило, -dev
непакет устанавливает файл библиотеки, а -dev
пакет содержит заголовочные файлы C и / или аналогичные ресурсы для тех, кто хочет скомпилировать код, использующий эту библиотеку.
Проект Github для этого пакета содержит определения в https://github.com/shadowsocks/shadowsocks-libev/tree/master/debian — в частности, libshadowsocks-libev-dev.install
устанавливает .so
(возможно, символическую ссылку), в то время libshadowsocks-libev2.install
как (не -dev
пакет) устанавливает usr/lib/*/libshadowsocks-libev.so.*
(т. Е. Фактический двоичный файл).
The README.md содержит довольно подробные инструкции по сборке из исходного кода на платформах, основанных на Debian.
Комментарии:
1. Спасибо за подробное объяснение. Что касается файлов Debian в вашем списке, я все еще не понимаю, откуда берутся файлы, может быть, как cp xx usr/include/ , имеет ли файл xx определенный путь?
2. Это похоже на английский, но некоторые слова, вероятно, отсутствуют, поэтому я действительно не уверен, что вы пытаетесь спросить. Когда вы создаете пакет,
debian/rules
создает файлы в текущем каталоге, чтоusr/include
на самом деле означаетinclude
каталог вusr
каталоге в текущем каталоге. Но обычно эти файлы затем попадают в/usr/include
приdpkg
установке пакета.3. Прошу прощения за мой плохой английский ~ У меня есть ответ, в основном из-за того, что я не знаком с пакетами CMake и deb, кстати, еще раз большое вам спасибо 🙂