2013-12-17 45 views
1

從對象文件生成共享對象時,是否可以保留調試符號?如何在生成共享庫時保留調試符號

例如,我使用隱式目標使用cc生成帶有調試符號的目標文件,並且只將-g添加到CFLAGS中。然後,我通過定義一個自定義目標,並使用cc的-shared選項生成共享對象(.so)文件。

我的意見至今都:

  • 從源代碼文件中我得到的調試符號
  • 從使用調試符號的目標文件的共享對象時使用-g選項直接產生的共享對象時包括不幫助

我的假設是:

  • 調試符號確實不包括在創建轉的時候,因爲,/usr/lib/rpm/find-debuginfo.sh自動運行,我收到我的文件已經被截掉

如果確切一些警告文件需要檢查,例如如何生成radius.so: http://git.ozlabs.org/?p=ppp.git;a=blob;f=pppd/plugins/radius/Makefile.linux;h=24ed3e580c4db6aeca129dd22dbe6de5f2d1ff5f;hb=HEAD

我需要再次提到,我已經爲CFLAGS添加了-g選項。

謝謝!

回答

2

快速和骯髒的答案是添加 退出0 在的%結束安裝腳本,禁用 被附加到 的安裝%運行時建立小腳本結束各種幫手。

更具體的答案是檢查輔助小腳本 (這條調試符號的共享庫)使用 轉--showrc 您的系統上,並修改什麼助手正在運行。

需要被配置爲 迪亞布勒調試符號剝離的兩個最重要的宏是:

# Define per-arch and per-os defaults. Normally overridden by per-target macros. 
%__arch_install_post %{nil} 
%__os_install_post  %{___build_post} 

其通常在紅帽-RPM-配置包重新定義。