Ubuntu下oprofile的安装过程问题记录

这里的Linux源代码版本是:linux-3.12.6

在Documentation/Changes文件中,提到编译环境所需要的其中一条:

oprofile 0.9 # oprofiled –version

为了能顺利编译Linux内核,要提前安装好该软件,折腾了一天,总算装好了,记录一下,以免下次再碰壁.

oprofile是什么?

<维基百科>
OProfile是Linux内核支持的一种性能分析机制。
它在时钟中断处理入口处建立监测点,记录被中断的上下文现场,由配套的用户态的工具oprof_start负责在用户态收集数据,opreport则分析数据并给出分析报告。
通过这个工具,开发人员可以得知一个程序的瓶颈在哪里,进而指导代码优化。

由于在apt get 源没有相应的包,因此只能用源代码来安装了.

OProfile下载地址:http://oprofile.sourceforge.net/download/

安装过程中遇到问题:

./configure 过程:
问题1:C compiler cannot create executables
查看目录下生成的config.log文件:
/usr/local/bin/ld: this linker was not configured to use sysroots
经过查阅,得知:ld是属于binutils包里面的.
于是,下载源码重新编译:
binutils下载地址:http://ftp.gnu.org/gnu/binutils/?C=M;O=D
安装步骤:

       : ./configure --with-sysroots
       : make clean
       : make
       : sudo make install

这里的./configure可能也会出现ld的相关错误,如果是这种情况,这要先删除/usr/local/bin/ld文件,删除之前做个备份.然后重新执行上面的流程.

问题2:configure: error: liberty library not found
该库也是在binutils中,在libiberty下:

        : cd libiberty //进入该目录
        :./configure //完成之后会有个Makefile文件产生
        : vi Makefile  // 编辑该文件,找到并修改改行为:CFLAGS = -g -O2 -fPIC 保存
        : make clean 
        : make
        : gcc -shared *.o -o libiberty.so //生成.so文件,把该文件拷到/usr/lib中.
        : sudo cp libiberty.so /usr/lib/libiberty.so

最后还需要bfd的动态链接库,也是在binutils中,在bfd中,由于自带的configure可以加入–enable-shared,所以可以利用该参数自动生成.so文件到/usr/lib中.

        : cd bfd
        : ./configure --enable-shared
        : make clean
        : make
        : sudo make install 

准备就绪: 重新来一遍安装:

        : ./configure
        : make clean
        : make
        : sudo make install

到此没有出现错误就算成功了.

最后,这片文章帮了不少忙:http://blog.chinaunix.net/uid-13746440-id-3152484.html

你可能感兴趣的:(oprofile安装)