看板 C_and_CPP 關於我們 聯絡資訊
小弟需要把 release 出去的 .so 檔, 變數和函數的名稱隱藏起來,還有 class, struct, namespace 的名稱也都要隱藏起來。 所以常數就採取這樣宣告 static const int CONSTANT_NUMBER = 0; 全域變數就這樣宣告 static float myData = 0.0f; 函數就這樣宣告 static void myFunction(); // prototype static void myFunction() {} 不過 struct, class, & namespace 不知道要怎麼藏起來。 最簡單的情形假設 struct, class 裡面有 static 變數就整個破功了。 namespace 好像只要裡面不要有看得見的東西,自己的名稱就不會出現。 那請問有什麼好方法嗎? 另外,請問有什麼工具可以看 .so 檔中 可見的函數和變數名稱清單,是否可以推薦呢? 感謝!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.241.67.33
CCWck:typedef? 10/23 23:05
applecool:請問是什麼意思呢? 10/23 23:06
Schottky:objdump -CT filename.so 和 nm -D filename.so 10/23 23:08
Schottky:還有大絕招 strings filename.so 10/23 23:08
applecool:出現好多沒看過的關鍵字,要好好研究一番了 10/23 23:14
applecool:感謝感謝,還有嗎還有嗎 10/23 23:15
applecool:不過那個大絕招是?好像 GOOGLE 不太到阿(搔頭) 10/23 23:16
Schottky:呃, 一般來說 UNIX command 應該用 man 去看說明書啊 10/23 23:21
Schottky:http://goo.gl/iMVh3P 10/23 23:24
applecool:可是我是在 windows 上 compile android 的 so 檔耶 10/23 23:34
Schottky:那就是你的問題了, 我都在 Linux compile Android 的 .so 10/23 23:38
Bencrie:-fvisibilty=hidden ? 10/23 23:40
applecool:樓上這個好!!! 感恩感恩!!! 10/24 00:03
applecool:ㄟㄟ好像不一樣說,我只想把名稱隱藏起來 10/24 00:07
applecool:-fvisibilty=hidden 應該還是看得到只是不能 link ? 10/24 00:07
Bencrie:用 -fvisibilty=hidden 編譯完後,strip target.so 10/24 08:55
Bencrie:這樣 objdump -t/-T 都看不到 symbol 10/24 08:56
Bencrie:針對單一目標請在 source 加 10/24 09:00
Bencrie:__attribute__((visibility("hidden"))) 10/24 09:00
applecool:阿了解了,感謝!!! 10/24 21:54