Как собрать библиотеку HIDAPI в режиме релиза в Linux? - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь создать раздетый .so файл для библиотеки HIDAPI. Я клонировал библиотеку из https://github.com/libusb/hidapi.git. Я следовал инструкциям по сборке в системе Linux:

./bootstrap
./configure
make
sudo make install 

Она генерирует файл .so в указанном месте. Когда я проверял файл .so с помощью команды file, я получаю «not-stripped».

$ file libhidapi-libusb.so.0.0.0
libhidapi-libusb.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=df7b02a51941902793e795cd5ff7ec3173d3a7fe, with debug_info, not stripped

Как я могу сгенерировать файл .so библиотеки HIDAPI в режиме Release для Linux?

1 Ответ

1 голос
/ 03 октября 2019

Как собрать библиотеку HIDAPI в режиме выпуска в Linux?

Режим выпуска обычно означает (1) оптимизации на -O2 или -O3 и (2) отладочные утвержденияудален. Для (2) вы обычно определяете -DNDEBUG. Таким образом, ваш CPPFLAGS должен включать -DNDEBUG;и ваши CFLAGS и CXXFLAGS должны включать -O2 или -O3.

В выпусках могут быть (или не могут) символы. Там нет особого смысла в извлечении символов в публичной библиотеке. Имеет больше смысла удалять символы в закрытом исходном / частном двоичном файле. Обычно вы не хотите разбивать, потому что зачистка делает трассировку стека бесполезной.

С учетом вышесказанного стандартная цель GNU Make для удаления двоичных файлов равна make install-strip;см. 16.6 Стандартные цели для пользователей в руководстве по GNU Make. И обратите внимание на руководство:

install-strip не должно удалять исполняемые файлы в каталоге сборки, которые копируются для установки. Следует удалять только установленные копии.

Также обратите внимание, что общие объекты должны экспортировать открытые символы, поэтому вы не можете удалить столько символов, сколько ожидаете. Вы также можете быть заинтересованы в Символ видимости в вики GCC.


Как я могу сгенерировать .so файл библиотеки HIDAPI в режиме выпуска для Linux?

Подводя итог, можно построить с:

  • CPPFLAGS должен включать -DNDEBUG
  • CFLAGS должен включать -O2 или -O3
  • CXXFLAGS должен включать -O2 или -O3

и устанавливать с:

  • make install-strip
...