如何为嵌入式开发建立交叉编译环境[4]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:


然后进入 build-glibc 目录配置 glibc




$cd build-glibc
$CC=arm-linux-gcc ../glibc-2.2.3/configure --host=$TARGET --prefix="/usr" 
--enable-add-ons --with-headers=$TARGET_PREFIX/include

CC=arm-linux-gcc 是把 CC 变量设成你刚编译完的boostrap gcc,用它来编译你的glibc。--enable-add-ons是告诉glibc用 linuxthreads 包,在上面我们已经将它放入了 glibc 源码目录中,这个选项等价于 -enable-add-ons=linuxthreads。--with-headers 告诉 glibc 我们的linux 内核头文件的目录位置。

配置完后就可以编译和安装 glibc




$make
$make install_root=$TARGET_PREFIX prefix="" install

然后你还要修改 libc.so 文件


GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a)

改为
GROUP ( libc.so.6 libc_nonshared.a)

这样连接程序 ld 就会在 libc.so 所在的目录查找它需要的库,因为你的机子的/lib目录可能已经装了一个相同名字的库,一个为编译可以在你的宿主机上运行的程序的库,而不是用于交叉编译的。



回页首


建立全套编译器(full gcc)

在建立boot-gcc 的时候,我们只支持了C。到这里,我们就要建立全套编译器,来支持C和C++。




$cd $PRJROOT/build-tools/build-gcc
$../gcc-2.95.3/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++

--enable-languages=c,c++ 告诉 full gcc 支持 c 和 c++ 语言。

然后编译和安装你的 full gcc




$make all
$make install

我们再来看看 $PREFIX/bin 里面多了哪些东西




$ls $PREFIX/bin

你会发现多了 arm-linux-g++ 、arm-linux-protoize 和 arm-linux-c++ 几个文件。

G++-gnu的 c++ 编译器。

Protoize-与Unprotoize相反,将K&R C的源码转化为ANSI C的形式,函数原型中加入参数类型。

C++-gnu 的 c++ 编译器。

到这里你的交叉编译工具就算做完了,简单验证一下你的交叉编译工具。

用它来编译一个很简单的程序 helloworld.c




#include <stdio.h>

int main(void)
{
	printf("hello world\n");
	return 0;
}

$arm-linux-gcc helloworld.c -o helloworld
$file helloworld
helloworld: ELF 32-bit LSB executable, ARM, version 1, 
dynamically linked (uses shared libs), not stripped

上面的输出说明你编译了一个能在 arm 体系结构下运行的 helloworld,证明你的编译工具做成功了。



回页首

本文关键:如何为嵌入式开发建立交叉编译环境
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top