博通交换SDK编译指南
SDK目录结构
Make子系统
博通SDK同时支持多种芯片平台和操作系统,因此,Make子系统是一个层次化的结构。Makefile中使用TARGET编译宏表示这种层次结构:
TARGET = ${targetbase}-${targetplat}${target_suffix}
targetbase表示操作系统,可选取值为vxworks,linux,unix-user,unix-linux,unix-solaris,unix-netbsd;
targetplat表示芯片平台,如keystone,keystone-2_6,raptor-2_6等
SDK编译宏则用来表示SDK根目录路径,编译时,所有的目标文件存放在${SDK}/build/${TARGET}目录。
VxWorks编译
准备工作
在${SDK}/system/vxworks/<targetplat>目录创建setenv.bat脚本,后面编译时,先执行setenv.bat脚本设置环境变量
set SDK=%~dp0/../../../ set WIND_BASE=D:/Tornadomips set SDK_UTIL=%WIND_BASE%/util set WIND_HOST_TYPE=x86-win32 set PERL_BASE=%WIND_BASE%/perl set HOSTTYPE=Windows2000PC set TARGET=vxworks-keystone set VX_VERSION=55 set PATH=%SDK_UTIL%;%WIND_BASE%/host/x86-win32/bin;%WIND_BASE%/host/x86-win32/lib/gcc-lib/mips-wrs-vxworks/2.96-mips3264-010729;%WIND_BASE%/perl/bin;%WIND_BASE%/host/x86-win32;%PATH%
全量编译
cd ${SDK}/systems/vxworks/<targetplat>
setenv.bat
make
需要依赖的Makefile文件如下:
${SDK}/systems/vxworks/Makefile make命令最开始解析该Makefile文件
${SDK}/make/Make.config ${SDK}/systems/vxworks/Makefile中include
${SDK}/make/Make.tools ${SDK}/systems/vxworks/Makefile中include
${SDK}/make/Make.local ${SDK}/systems/vxworks/Makefile中include
${SDK}/make/Makefile.${targetbase} 指定操作系统的编译宏
${SDK}/make/Makefile.${targetbase}-{targetplat} 指定操作系统和芯片平台的编译宏
${SDK}/make/Make.lib ${SDK}/systems/vxworks/Makefile中include
${SDK}/make/Make.depend ${SDK}/systems/vxworks/Makefile中include
模块编译
setenv.bat
cd ${SDK}/src/<dir>
make TARGET=<targetbase>-<targetplat>
常见问题
1、编译时出现unable to allocate heap 0xBFC00000, head_chunk_size 587202560, pid 14356, Win32 error 0,此时,换其他操作系统编译即可,一般低版本SDK使用Windows XP系统,高版本使用Windows 7系统
2、multiple target patterns, 因为make的版本太低导致,一般需要make 3.8.1或者make 3.8.2版本