gpt4 book ai didi

linux - 如何在 Linux 上以 Release模式构建 HIDAPI 库?

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:30 25 4
gpt4 key购买 nike

我正在尝试为 HIDAPI 库创建一个剥离的 .so 文件。我从 https://github.com/libusb/hidapi.git 克隆了库.我遵循了在 Linux 系统上构建的步骤:

./bootstrap
./configure
make
sudo make install

它正在给定位置生成 .so 文件。当我用 file-command 检查 .so 文件时,我得到“未剥离”。

$ 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

如何在 Linux 的 Release 模式下生成 HIDAPI 库的 .so 文件?

最佳答案

How to build HIDAPI library in release mode on Linux?

Release模式通常意味着 (1) 在 -O2-O3 处进行优化,以及 (2) 删除调试断言。对于 (2),您通常定义 -DNDEBUG。所以你的CPPFLAGS应该包含-DNDEBUG;并且您的 CFLAGSCXXFLAGS 应该包括 -O2-O3

发布版本可能会(也可能不会)删除符号。在公共(public)图书馆中剥离符号没有多大用处。去除封闭源代码/私有(private)二进制文件中的符号更有意义。通常您不想剥离,因为剥离会使堆栈跟踪无用。

话虽如此,剥离二进制文件的标准 GNU Make 目标是 make install-strip;见16.6 Standard Targets for Users在 GNU Make 手册中。手册中的注释:

install-strip should not strip the executables in the build directory which are being copied for installation. It should only strip the copies that are installed.

另请注意,共享对象必须导出公共(public)符号,因此您可能不会删除预期的那么多符号。您可能还对 Symbol Visibility 感兴趣在 GCC wiki 上。


How can I generate the .so file of the HIDAPI library in release mode for Linux?

总而言之,构建:

  • CPPFLAGS 应该包含 -DNDEBUG
  • CFLAGS 应包含 -O2-O3
  • CXXFLAGS 应包含 -O2-O3

并安装:

  • 制作安装条

关于linux - 如何在 Linux 上以 Release模式构建 HIDAPI 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58208884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com