您的位置:首页 > 运维架构

建立OPENWRT交叉编译环境

2013-12-04 13:23 363 查看


Cross Compile

If you want to use a program,
currently not contained in the OpenWrt repository, you probably won't find a binary compiled for your CPU. Provided that it is released as open source, you can download the code and compile it using the OpenWrt
Buildroot.

Note that not every code is compilable for every CPU architecture. Also performance on embedded systems is limited compared to ordinary computers.


Procedure

Follow the build instructions outlined in OpenWrt Buildroot – Usage

Locate the toolchain binaries in the 
staging_dir/toolchain-architecture_gcc-compilerver_uClibc-libcver/bin/
 directory

Add that directory to the 
PATH
 environment variable:

PATH=$PATH:(your toolchain/bin directory here)


export PATH


Set the 
STAGING_DIR
 environment variable to the above toolchain dir and export it:

STAGING_DIR=(your toolchain directory here)


export STAGING_DIR


Download and unpack the code to be compiled, change into the unpacked directory

Pass the host to the build system of the package to compile

For GNU configure, use 
--host=architecture-openwrt-linux-uclibc
 (for example: 
mips-openwrt-linux-uclibc
)

For GNU make, override the 
CC
 and 
LD
 environment variables (usually
not needed if GNU configure was used)

make CC=architecture-openwrt-linux-uclibc-gcc
 
LD=architecture-openwrt-linux-uclibc-ld


If compilation aborts due to missing header files or shared objects, you might need to override 
CFLAGS
 and 
LDFLAGS
 to
point to the
staging_dir/target-architecture_uClibc-libcver/usr/include
 and 
…/usr/lib
 directories

Debugging requires gdb in the toolchain. Default config does not include it. Include using 
make menuconfig
. [Advanced configuration options→Toolchain
Options→Build gdb]

Remote debugging can be done using script 
./scripts/remote-gdb


When compilation is finished, copy the resulting binary and realted libraries to the target device to test it. It might be necessary to set 
LD_LIBRARY_PATH
 on the target to point the binary
to libraries in nonstandard locations.

If the program works well enough, you maybe want to build a real package for the opkg package manager and make it easily accessible for everyone out there. See Creating
your own packages and Using Dependencies for further information on that.

转载自:http://wiki.openwrt.org/doc/devel/crosscompile 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openwrt linux 交叉编译