2016-07-30 93 views
3

,當我在釋放模式中使用的cmake我有以下的二進制文件:如何配置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選項以使其被剝離?

爲什麼默認發佈模式不能去掉我的二進制文件?

+0

到目前爲止你在哪裏試過把'-s'放到哪裏? – 2016-07-30 15:33:19

+0

我不知道如何做到這一點:/ – Fractale

+0

我也不太瞭解這個,所以我們都陷入困境:)那個命令是什麼在終端? – 2016-07-30 16:13:31

回答

2

清潔的方法是(取決於C或C++代碼)

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

CFLAGS或CXXFLAGS修改但有,如果你不想改變你的構建系統(找出確切的地方多了一個黑客放在上面的線可能會很棘手)。你可能只需要使用帶作爲獨立的應用程序,如:

strip -s a.out 

,併爲此後的可執行文件是準備發佈的生成後步驟。我發現這種方式更乾淨,然後干擾編譯器標誌。

+1

您也可以將'-DCMAKE_C_FLAGS =「 - s」'傳遞給CMake調用,而不是更改您的文件。 – usr1234567

+1

同意。如果只想剝離發佈版本,則更好-DCMAKE_C_FLAGS_RELEASE。但是,如果cmake構建覆蓋標誌而不是添加標誌(定製構建的常規情況),這可能會很危險。 –

+0

將這2行復制粘貼到我的CMakeLists.txt中。沒有區別。同時獨立的/ usr/bin/strip將二進制大小減少到原來的55%。 – Soonts