跳转到内容

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
华夏公益教科书