本文档适用于考虑在Mac上进行开发的SylixOS工程师,目前SylixOS集成开发环境并不支持Mac,本文当前的处理方法并不能真正实现Mac上的开发流程,后期待完善,特此申明。
打开终端,创建一个名为 sylixos_workspace 的目录(下文约定该目录是 /home/user/sylixos_workspace 目录,即 ~/sylixos_workspace):
cd ~
mkdir sylixos_workspace
进入该目录,输入如下命令即可下载 SylixOS Base工程、mini2440开发板BSP工程、示例工程等:
cd sylixos_workspace
git clone http://git.sylixos.com/repo/sylixos-base.git
git clone http://git.sylixos.com/repo/bspmini2440.git
git clone http://git.sylixos.com/repo/examples.git
git clone http://git.sylixos.com/repo/tools.git
git clone http://git.sylixos.com/repo/qemu-mini2440.git
sylixos-base 是 SylixOS Base 工程,里面包含了 libsylixos 和 libcextern 子工程,输入如下命令初始化和更新子工程:
cd sylixos-base
git submodule init
git submodule update
cd ..
交叉编译器的下载地地址是:https://launchpad.net/gcc-arm-embedded/+download
到上述网站下载Mac版本的编译器。
输入如下命令将其解压到 /usr/lib 目录:
sudo tar jxvf gcc-arm-none-eabi-5_4-2016q3-20160926-mac.tar.bz2 -C /usr/lib
输入如下命令将解压后的目录重命名为 /usr/lib/gcc-arm-none-eabi 目录(避免编译器升级,版本号日期改变带来不必要的问题):
sudo mv /usr/lib/gcc-arm-none-eabi-5_4-2016q3/ /usr/lib/gcc-arm-none-eabi
由于 SylixOS 修改了编译器的 reent.h 文件,所以使用编译器自带的 reent.h 文件将不能编译成功,需要复制 ~/sylixos_workspace/tools/arm-none-eabi-patch/4.9/reent.h 文件到 /usr/lib/gcc-arm-none-eabi/arm-none-eabi/include/sys 目录替换原有的文件。
替换前先备份编译器原有的 reent.h 文件:
sudo mv /usr/lib/gcc-arm-none-eabi/arm-none-eabi/include/sys/reent.h /usr/lib/gcc-arm-none-eabi/arm-none-eabi/include/sys/reent.h.bak
再替换编译器原有的 reent.h 文件:
sudo cp ~/sylixos_workspace/tools/arm-none-eabi-patch/4.9/reent.h
/usr/lib/gcc-arm-none-eabi/arm-none-eabi/include/sys
为了方便后续使用,修改环境变量 PATH:
sudo vi ~/.bash_profile
添加如下命令:
export PATH=/usr/lib/gcc-arm-none-eabi/bin:$PATH
最后重新启动终端,输入 arm-none-eabi-gcc 如果得到以下结果说明编译器安装成功:
sean-xps:~ sean$ arm-none-eabi-gcc arm-none-eabi-gcc: fatal error: no input files compilation terminated. sean-xps:~ sean$12345
sylixos-base工程包含了SylixOS操作系统libsylixos和SylixOS进程C库libextern子工程。
打开sylixos-base下的config.mk,修改为如程序清单 4-1所示。
程序清单 4-1 config.mk修改操作
#****************************************************************************** # SylixOS Base Project path #****************************************************************************** SYLIXOS_BASE_PATH = /home/user/sylixos_workspace/sylixos-base #****************************************************************************** # Toolchain prefix #****************************************************************************** TOOLCHAIN_PREFIX = arm-none-eabi- #****************************************************************************** # Debug options (debug or release) #****************************************************************************** DEBUG_LEVEL = debug
输入 make 命令以编译:
make
编译耗费的时间视你的机器的性能而定。经过上述配置之后,使用Mac编译,一般3,4分钟就可以编译完成。由此可见,在Mac下的编译速度明显优于Windows平台。
如果SylixOS的Base工程成功编译,最后libsylixos子工程生成静态库文件libsylixos.a和libdsohandle.a及libvpmpdm.a、动态库文件libvpmpdm.so、内核模块xinput.ko和xsiipc.ko、符号表文件symbol.c和symbol.h(位于/home/user/sylixos_workspace/sylixos-base/libsylixos/Debug目录)。
libextern子工程生成静态库文件libcextern.a和动态库文件libcextern.so(位于/home/user/sylixos_workspace/sylixos-base/libcextern/Debug目录)。
但使用当前配置的环境虽然make命令执行完成后,提示编译完成,但却不能编译生成上述全部文件,具体原因见下文。
Mac上Ecplise的安装本文不再赘述,可以参考网上相关内容。
5.1 安装Zylin CDT
打开eclipse菜单栏的“Help”并选择“Install New Software”选项,如图 5-1所示。
图 5-1 Ecplise Help栏
然后在“work with”后面的输入框输入 http://opensource.zylin.com/zylincdt,再单击“ADD”按钮,之后eclipse会自动查找软件包,查找完成之后出现下面的界面,然后选中插件,如图 5-2所示。单击“next”,出现安装协议时,单击同意,最后单击“finish”,并等待安装完成,由于该过程是先下载再安装,如果网络不好,等待时间会比较长。
图 5-2 Ecplise安装CDT
5.2 导入工程并设置编译工具链
将从官网git上下载的Base工程导入Ecplise,这里导入的方法有多种,比较推荐读者先创建一个空的工程,然后将整个Base里的文件复制到创建的空的工程里。这样便于自定义编译工具链。
工程导入后,在工程属性栏设置上文安装过的交叉编译工具链,如图 5-3 所示。
图 5-3 设置编译工具链
5.3 编译Base工程
上述操作做完之后即可,右键工程选择“build Project”对Base工程进行编译。编译的结果如图 5 4 所示。
图 5-4 Ecplise编译结果
结果显示,使用Ecplise编译出的工程也并没有完全成功,查看控制台提示没有找到环境变量的脚本文件。因此也导致了编译不成功。
综上,在Mac上使用上述两种方式编译均失败的原因,是windows下编译时会使用makesymbol.bat脚本文件去生成符号表,而在Mac环境下是无法运行bat脚本文件的,因此要想在Mac上搭建SylixOS的开发环境,必须重新改写makesymbol脚本文件。从Ecplise编译的结果来看,Makefile里其余的编译内容基本执行完成,如果重写此脚本文件应该可以在Mac下实现SylixOS的基本开发。
本文出自 “11451177” 博客,请务必保留此出处http://11461177.blog.51cto.com/11451177/1975462
原文地址:http://11461177.blog.51cto.com/11451177/1975462