Debian

如何獲取用於在 (.deb) 包中建構二進製文件的編譯器標誌?

  • April 6, 2016

我知道這apt-get source <package_name>會給你源包。它包含一個debian文件夾,其中包含一個名為rules. 如果我理解正確,這個文件描述瞭如何將源包轉換為.deb包,包括應該使用哪些編譯器標誌。

兩個問題:

  1. 如何獲取實際使用的編譯器標誌?是否有必要執行make -n(如果可能的話)或者我可以通過解析文件以某種方式獲取它們?
  2. 鑑於來自官方儲存庫的源包的情況。編譯器標誌是 100% 由rules文件確定還是取決於.deb創建完成的系統?我是否需要“鏡像”官方建構系統以獲取在官方.deb建構過程中使用的相同標誌?我怎樣才能做到這一點?

我在這裡了解到,debian 沒有官方政策,哪些編譯器標誌用於 .deb 打包的二進製文件。

使用的編譯器標誌是

  • debian/rules文件,
  • 包的建構文件(因為上游作者也可以在那裡指定標誌),
  • 使用的建構系統(dhcdbs),
  • 預設編譯器設置。

要查看使用的標誌,您至少需要編譯包:

debian/rules build

嘗試類似的事情

debian/rules -n

一般不會帶你走太遠;例如在dh基於 - 的包上它只會說

dh build

或類似的東西;要求dh顯示(使用--no-act)會產生什麼

dh_testdir
dh_auto_configure
dh_auto_build

等等。

沒有萬無一失、易於解釋的方法來通過閱讀來確定建構標誌debian/rules;您可以通過查找那裡設置的標誌來獲得一些想法,並且(在適當的情況下)通過查找dpkg-buildflags(例如DEB_BUILD_MAINT_OPTIONS)的選項並執行它。對於許多軟體包,查看使用了哪些標誌的最簡單方法是查看存檔中隨附的軟體包的建構日誌,從https://buildd.debian.org開始。例如, on的日誌coreutils``i386顯示使用的標誌用於-Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security編譯和-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wl,--as-needed -Wl,-z,relro連結(感謝Faheem Mitha指出後者!)。

引用自:https://unix.stackexchange.com/questions/274673