Linux环境开发指南

来自SylixOS-wiki
2015年5月12日 (二) 16:20Jiaojinxing (讨论 | 贡献)的版本

跳转至: 导航, 搜索

目录

搭建 SylixOS Linux 编译环境

笔者的主机操作系统是 ubuntu-12.04,使用的是普通用户 user。

安装开发工具

下载 SylixOS 源代码需要 Git 工具,修改配置文件需要用到 vim 编辑器,

如果你的系统不具备这些工具,请先执行如下命令安装它们到你的系统:

sudo apt-get install build-essential 
sudo apt-get install git
sudo apt-get install vim

下载 SylixOS 源代码

创建一个名为 sylixos_workspace 的目录(下文约定该目录是 /home/user/sylixos_workspace 目录,即 ~/sylixos_workspace),

打开终端,进入该目录,输入如下命令即可下载 SylixOS Base工程、mini2440开发板BSP工程、示例工程等:

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

安装交叉编译器

交叉编译器的下载地地址是 https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q1-update/+download/gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2
下载的交叉编译器压缩包是 gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2。
输入如下命令将其解压到 /usr/lib 目录:
sudo tar jxvf gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2 -C /usr/lib
输入如下命令将解压后的目录重命名为 /usr/lib/gcc-arm-none-eabi 目录(避免编译器升级,版本号日期改变带来不必要的问题):
sudo mv /usr/lib/gcc-arm-none-eabi-4_9-2015q1/ /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:
vim ~/.bashrc
添加如下命令到 .bashrc 文件的末尾:
export PATH=/usr/lib/gcc-arm-none-eabi/bin:$PATH
最后重新启动终端,输入 arm-none-eabi-gcc 如果得到以下结果说明编译器安装成功:
user@ubuntu:~/sylixos_workspace$ arm-none-eabi-gcc
arm-none-eabi-gcc: fatal error: no input files
compilation terminated.

编译 SylixOS

编译SylixOS Base工程


sylixos-base工程包含了SylixOS操作系统libsylixos和SylixOS进程C库libextern子工程。
打开sylixos-base下的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 
编译耗费的时间视你的机器的性能而定,一般需要10分钟。
最后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目录)。

编译bspmini2440工程


bspmini2440工程是移植SylixOS操作系统到mini2440开发板的BSP工程。
打开bspmini2440下的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 
最后生成ELF文件bspmini2440.elf和二进制文件bspmini2440.bin(位于/home/user/sylixos_workspace/bspmini2440/Debug目录)。

编译examples工程


examples工程是示例工程,包括应用程序工程、内核模块工程、库工程。
打开examples下的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 
examples工程包含了三个子工程:应用程序示例工程hello_world、内核模块示例工程hello_module、库示例工程hello_library。
  • 应用程序示例工程hello_world会生成应用程序可执行文件hello_world(位于/home/user/sylixos_workspace/examples/hello_world/Debug目录)。
  • 内核模块示例工程hello_module会生成内核模块文件hello_module(位于/home/user/sylixos_workspace/examples/hello_module/Debug目录)。
  • 库示例工程hello_library会生成静态库文件libhello_library.a和动态库文件libhello_library.so

(位于/home/user/sylixos_workspace/examples/hello_library/Debug目录)。

个人工具
名字空间

变种
操作
导航
工具