首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Linux上构建发布模式的HIDAPI库?

如何在Linux上构建发布模式的HIDAPI库?
EN

Stack Overflow用户
提问于 2019-10-03 04:23:30
回答 1查看 262关注 0票数 0

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

代码语言:javascript
复制
./bootstrap
./configure
make
sudo make install 

它在给定的位置生成.so文件。当我使用文件命令检查.so文件时,我得到的结果是“未剥离”。

代码语言:javascript
复制
$ 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发布模式下生成HIDAPI库的.so文件?

EN

回答 1

Stack Overflow用户

发布于 2019-10-03 06:00:28

如何在Linux上构建发布模式的HIDAPI库?

发布模式通常意味着(1)在-O2-O3进行优化,以及(2)删除调试断言。对于(2),通常定义-DNDEBUG。因此,您的CPPFLAGS应该包含-DNDEBUG;而您的CFLAGSCXXFLAGS应该包含-O2-O3

发布版本可能(也可能不会)剥离符号。在公共库中剥离符号没有多大用处。在封闭源代码/私有二进制文件中剥离符号更有意义。通常,您不希望剥离,因为剥离会使堆栈跟踪变得无用。

也就是说,剥离二进制文件的标准GNU Make目标是make install-strip;参见GNU Make手册中的16.6 Standard Targets for Users。并从手册中注意到:

install-strip不应剥离正在复制以进行安装的build目录中的可执行文件。它应该只剥离已安装的副本。

另请注意,共享对象必须导出公共符号,因此您可能无法删除预期数量的符号。您可能还会对GCC维基上的Symbol Visibility感兴趣。

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

总而言之,使用以下工具进行构建:

  • CPPFLAGS应包含-DNDEBUG
  • CFLAGS应包含-O2,或-O3
  • CXXFLAGS应包含-O2-O3

并与以下组件一起安装:

  • make install-strip
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58208884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档