OProfile编译续

 

昨天交叉编译了popt库,并且拷贝到了交叉编译器下的lib目录下,

由于bfdliberty库存在于binutils-dev库中,所以直接就交叉编译binutils-dev源码。

本来以为把bfdliberty库和相应的头文件都拷贝到交叉编译器下面的includelib目录下,

然后执行:

./configure --with-kernel-support --target=arm-9tdmi-linux-gnu --host=arm-9tdmi-linux-gnu --build=i686-pc-linux-gnu --prefix=/work/OProfile/myOProfile

就可以生成Makefile文件了。但是结果是还是找不到bfd库。

后来察看./configure --help

[root@localhost oprofile-0.9.3]# ./configure --help

`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as

VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:

-h, --help

display this help and exit

--help=short

display options specific to this package

--help=recursive

display the short help of all the included packages

-V, --version

display version information and exit

-q, --quiet, --silent  

do not print `checking...' messages

--cache-file=FILE  

cache test results in FILE [disabled]

-C, --config-cache

alias for `--cache-file=config.cache'

-n, --no-create

do not create output files

--srcdir=DIR

find the sources in DIR [configure dir or `..']

Installation directories:

--prefix=PREFIX

install architecture-independent files in PREFIX

[/usr/local]

--exec-prefix=EPREFIX  

install architecture-dependent files in EPREFIX

[PREFIX]

By default, `make install' will install all the files in

`/usr/local/bin', `/usr/local/lib' etc.  You can specify

an installation prefix other than `/usr/local' using `--prefix',

for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:

--bindir=DIR

user executables [EPREFIX/bin]

--sbindir=DIR

system admin executables [EPREFIX/sbin]

--libexecdir=DIR

program executables [EPREFIX/libexec]

--datadir=DIR

read-only architecture-independent data [PREFIX/share]

--sysconfdir=DIR

read-only single-machine data [PREFIX/etc]

--sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]

--localstatedir=DIR

modifiable single-machine data [PREFIX/var]

--libdir=DIR

object code libraries [EPREFIX/lib]

--includedir=DIR

C header files [PREFIX/include]

--oldincludedir=DIR

C header files for non-gcc [/usr/include]

--infodir=DIR

info documentation [PREFIX/info]

--mandir=DIR

man documentation [PREFIX/man]

Program names:

--program-prefix=PREFIX

prepend PREFIX to installed program names

--program-suffix=SUFFIX

--program-transform-name=PROGRAM   run sed PROGRAM on installed program names

X features:

--x-includes=DIR

X include files are in DIR

--x-libraries=DIR  

X library files are in DIR

Optional Features:

--disable-FEATURE

do not include FEATURE (same as --enable-FEATURE=no)

--enable-FEATURE[=ARG] 

include FEATURE [ARG=yes]

--disable-dependency-tracking

speeds up one-time build

--enable-dependency-tracking  

do not reject slow dependency extractors

--enable-pch

enable precompiled header (default is disabled)

--enable-gcov

enable option for gcov coverage testing (default is disabled)

--disable-werror

disable -Werror flag (default is enabled for non-release)

--disable-optimization

disable optimization flags (default is enabled)

Optional Packages:

--with-PACKAGE[=ARG]

use PACKAGE [ARG=yes]

--without-PACKAGE

do not use PACKAGE (same as --with-PACKAGE=no)

--with-binutils=dir

Path to binutils installation to use

--with-gcc=dir

Path to GCC installation to use

--with-kernel-support

Use 2.6 kernel (no kernel source tree required)

--with-linux=dir

Path to Linux source tree

--with-module-dir=dir

Path to module installation directory

--with-extra-includes=DIR

add extra include paths

--with-extra-libs=DIR

add extra library paths

--with-x

use the X Window System

--with-qt-dir

where the root of Qt is installed

--with-qt-includes

where the Qt includes are.

--with-qt-libraries

where the Qt library is installed.

--with-target=cell-be   Check BFD support for Cell Broadband Engine SPU profiling

Some influential environment variables:

CC

C compiler command

CFLAGS

C compiler flags

LDFLAGS

linker flags, e.g. -L if you have libraries in a nonstandard directory

CPPFLAGS

C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory

CPP

C preprocessor

CXX

C++ compiler command

CXXFLAGS

C++ compiler flags

CXXCPP

C++ preprocessor

Use these variables to override the choices made by `configure' or to help

it to find libraries and programs with nonstandard names/locations.

[root@localhost oprofile-0.9.3]#

其中--with-binutils = dir 选项用来指定binutils编译库的安装目录,遂在配置中加上

./configure --with-kernel-support --target=arm-9tdmi-linux-gnu --host=arm-9tdmi-linux-gnu --build=i686-pc-linux-gnu --with-binutils=/work/binutils/binutils-2.17-install-dir/ --prefix=/work/OProfile/myOProfile

执行ok,产生Makefile文件

然后执行make

给出几个常量没有定义,如:PATH_MAX等。找到相应的头文件,解决之。make编译通过,

Make install 安装binutils到/work/OProfile/myOProfile

但是个人认为应该还有其他的解决方法。

缺少的库在交叉编译后,直接拷贝到编译器下的lib目录不是很好的方法,

选项中

--libdir=DIR

object code libraries [EPREFIX/lib]

--includedir=DIR

C header files [PREFIX/include]

应该可以用来引导编译器找到外部的库文件和头文件所在的目录吧。

error ===> ./configure --with-kernel-support --target=arm-9tdmi-linux-gnu --host=arm-9tdmi-linux-gnu --build=i686-pc-linux-gnu --prefix=/work/OProfile/myOProfile --libdir=/work/popt/poptinstall/lib --includedir=/work/popt/poptinstall/include

行不通,必须把popt库手动拷贝到交叉编译器的lib目录下。

接下来的工作就是在JK2410开发板上配置OPfile了。

12-23 21:23