c++ - 如何为 strip 文件配置cmake

标签 c++ gcc compilation cmake release

当我在 Release模式下使用 cmake 时,我有以下二进制文件:

64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=485ac09b0a3aa879f88b7f5db6c00ea8d8e1eaf6, not stripped

我想要剥离二进制文件。 我怎么能以一种干净的方式告诉 cmake 将 -s 选项添加到我的编译器以使其被删除?

为什么默认 Release模式没有删除我的二进制文件?

最佳答案

最干净的可能方法是修改 CFLAGS 或 CXXFLAGS(取决于 C 或 C++ 代码)

set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")

但是如果您不想更改您的构建系统,还有一个 hack(找出放置上面行的确切位置可能很棘手)。您可以将 strip 用作独立应用程序,例如:

strip -s a.out

并在可执行文件准备好作为构建后步骤发布后执行此操作。我发现这种方式更干净,然后扰乱了编译器标志。

关于c++ - 如何为 strip 文件配置cmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38675403/

相关文章:

c++ - 引用 this 指针 : GCC vs clang

c - 为什么 GCC 会在教科书练习中没有 clang 的地方出现错误?

c - C 编程中 gcc 命令中 -g 和 -o 选项的使用

c - 寄存器存储类的范围是什么?

opencv - 使用两个对象编译OpenCV程序时,pkg-config不起作用

c++ - 缺少 Visual Studio 2010 Express 64 位属性

C++我们什么时候应该更喜欢使用两个链接的static_cast而不是reinterpret_cast

c - C 中的暂定定义和链接

c++ - 如何最好地将 C++/Cython 项目编译成可执行文件?

c++ - C++ 何时引入了 'and' 和 'or' 替代标记?