我正在尝试为HIDAPI库创建一个剥离的.so文件。我从https://github.com/libusb/hidapi.git克隆了这个库。我遵循了在Linux系统上构建的步骤:
./bootstrap
./configure
make
sudo make install 它在给定的位置生成.so文件。当我使用文件命令检查.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发布模式下生成HIDAPI库的.so文件?
发布于 2019-10-03 06:00:28
如何在Linux上构建发布模式的HIDAPI库?
发布模式通常意味着(1)在-O2或-O3进行优化,以及(2)删除调试断言。对于(2),通常定义-DNDEBUG。因此,您的CPPFLAGS应该包含-DNDEBUG;而您的CFLAGS和CXXFLAGS应该包含-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应包含-DNDEBUGCFLAGS应包含-O2,或-O3CXXFLAGS应包含-O2或-O3并与以下组件一起安装:
make install-striphttps://stackoverflow.com/questions/58208884
复制相似问题