2017-07-18 74 views
1

假設我有一個簡單的C文件。編譯沒有無關信息

#include <stdio.h> 

int main() { 
    printf("It works!\n"); 
    return 0; 
} 

如何編譯C源代碼,以便生成的二進制文件不泄漏關於我的信息?即。編譯一個匿名二進制

如果我只是上述源上使用

GCC main.c中

然後

串的a.out

我得到的輸出如

GLIBC_2.2.5

經歷在文本編輯器的a.out,我能找到

lib64的/ LD-Linux的x86的64.so.2

GCC:(Ubuntu的5.4.0-6ubuntu1〜16.04.4)5.4.0 20160609

即使經過strip ING a.out的,還有很多在二進制

編輯識別信息:原因提出這個問題

我還年輕,希望能找到一份工作在編程中。

但是,我想在創建一個「專業」之前創建一個「測試」回購。

我知道我可以刪除「test」,但它可能會歸檔到某處(archive.org)。

我不能做一個「私人」信息庫,因爲它是一項付費功能

「測試」回購將包含的代碼,我已經寫了(但代碼的風格是不是按面值現在怎麼我的代碼) ,我也想編譯並將其添加到GitHub版本。

「專業」回購將包含我從現在開始寫的代碼。

我不想僱主知道作者是同一個人

+1

*爲什麼*你想要這個?什麼是你想解決的*實際*問題? –

+0

個人信息在哪裏? –

+0

@EdHeal編譯器在這裏可能是OP嗎? –

回答

0

GLIBC_2.2.5,需要動態鏈接/lib64/ld-linux-x86-64.so.2。你只能通過使用靜態鏈接(這在GNU/Linux上不被推薦和幾乎不受支持)擺脫困境。

要刪除編譯器標識,請使用-Qn選項進行編譯。

+1

-Qn是默認,並且不會刪除包含「Ubuntu」的.comment部分。試試'strip-.comment thebinary'。 –

+0

我認爲文檔是錯誤的,請參閱'toplev.c'中'flag_no_ident'的處理。 –

+0

在一個微不足道的例子中,無論我使用-Qn,-Qy還是一無所獲,都得到了相同的二進制數... –