2016-01-06 55 views
0

我來自Windows,並使用gcc生成了C++靜態庫(libMyLib.a)。靜態庫 - 調試還是發佈?

在Windows中,您實際上可以生成帶有調試信息和未優化的調試靜態庫(.lib)那麼你也可以生成一個發佈靜態庫(.lib),而不需要調試信息,並且意味着靜態地鏈接到最終產品中。

我做

$ objdump --syms libMyLib.a | grep "debug" 

,並得到了一堆線像

0000000000002ea0 l  F .text 00000000000001fc _ZN12_GLOBAL__N_121debugMyFunction2Ejllj 

因爲有在「調試」後綴我相信這個靜態庫是一個調試一個帶有調試嵌入到它的信息。我不知道爲什麼這是比Windows更小(Windows爲300 MB,而Linux只有13 MB)..我懷疑一些調試信息丟失。

我在這一點上兩個問題:

  1. 我是正確地指出,靜態的。一個庫是包含所有必要的調試信息調試一個?
  2. 發佈靜態庫在linux中生成(準備好在最終產品,靜態庫,沒有調試信息鏈接)嗎?如果是,我該如何製作一個?
+0

要包含調試信息,您需要包含編譯選項,以便您可以獲取可調試庫。在編譯器和鏈接器中查看關於調試的文檔(選項'-g')以獲取更多信息。您甚至可以製作帶有調試信息的共享對象(擴展名爲「.so」)。 –

回答