跳轉到內容

Linux 應用除錯技巧/工具包構建

來自 Wikibooks,開放世界中的開放書籍

本文件中詳細介紹的程式碼正在逐漸融合到一個工具包中,該工具包可在LPT 網站上獲取。

先決條件

[編輯 | 編輯原始碼]
C++11/C++0x 編譯器
[編輯 | 編輯原始碼]

如果您的發行版沒有此類編譯器,請從頭開始編譯一個。首先編譯 gcc 的先決條件,可在此處獲取

  • cloog
  • ppl
  • mpc
  • mpfr
  • gmp

然後編譯 gcc 本身

./configure \
    --enable-languages=c,c++ \
    --prefix=/opt/lpt/gcc-4.7.0-bin \
    --with-mpfr=/opt/lpt/mpfr-2.4.2-bin \
    --with-mpc=/opt/lpt/mpc-0.8.1-bin \
    --with-gmp=/opt/lpt/gmp-4.3.2-bin \
    --with-ppl=/opt/lpt/ppl-0.11-bin \
    --with-cloog=/opt/lpt/cloog-ppl-0.15.11-bin 
LD_LIBRARY_PATH=/opt/lpt/mpfr-2.4.2-bin/lib:/opt/lpt/mpc-0.8.1-bin/lib:/opt/lpt/gmp-4.3.2-bin/lib:/opt/lpt/ppl-0.11-bin/lib:/opt/lpt/cloog-ppl-0.15.11-bin/lib   make
make install


這是一個簡單的過程./configure && make。無需安裝。


-fPIC libbfd
[編輯 | 編輯原始碼]

呼叫堆疊程式碼依賴於libbfd。如果您希望連結libbfd靜態地縮短對部署機器的依賴關係 - 這可能具有或可能不具有動態libbfd- 您需要一個libbfd.a它是-fPIC編譯的。需要此標誌是因為靜態庫將連結到共享物件。普通的libbfd.a隨平臺一起提供的可能不是-fPIC一個,在這種情況下,您必須自己編譯。

cd binutils-2.22/bfd
export CFLAGS = -fPIC
/configure 
make

也無需安裝它。


最後,我們需要調整 LPT Makefile

CXX11_HOME       = /opt/lpt/gcc-4.7.0-bin
PAPI_HOME        = /opt/lpt/papi-4.4.0/src
LIBBFD_FPIC_HOME = /opt/lpt/binutils-2.22/bfd
華夏公益教科書