-步步搭建嵌入式Linux开发环境 - 基于ubuntu-16.04 64位

 

环境搭建

1. 更改ubuntu源

参考网址

更改文件sources.list

cd /etc/apt
sudo cp sources.list sources.list.bak
sudo vim sources.list

改为如下代码:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

更新源

sudo apt-get update
sudo apt-get upgrade

备注:常用的命令

sudo apt-get update  更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache search package 搜索软件包
sudo apt-cache show package  获取包的相关信息,如说明、大小、版本等
sudo apt-get install package --reinstall  重新安装包
sudo apt-get -f install  修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包依赖那些包
sudo apt-cache rdepends package 查看该包被哪些包依赖
sudo apt-get source package  下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
sudo apt autoremove 自动删除无用的包

2. VIM 安装

安装VIM

sudo apt-get install vim

安装curl

sudo apt install curl

安装vim-plug

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

备注

:PlugStatus   # 查看安装状态
:PlugInstall  # 安装插件

配置vim, 创建并编译~/.vimrc


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""特设的配置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 定义快捷键的前缀,即 <Leader>
let mapleader=";"

" >>
" " 文件类型侦测
"
" " 开启文件类型侦测
filetype on
" " 根据侦测到的不同类型加载对应的插件
filetype plugin on
"
" " <<

" >>
" " vim 自身(非插件)快捷键
"
" " 定义快捷键到行首和行尾
nmap LB 0
nmap LE $
"
" " 设置快捷键将选中文本块复制至系统剪贴板
vmap <Leader>y "+y 
" " 设置快捷键将系统剪贴板内容粘贴至vim
nmap <Leader>p "+p
"
" " 定义快捷键关闭当前分割窗口
nmap <Leader>q :q<CR>
" " 定义快捷键保存当前窗口内容
nmap <Leader>w :w<CR>
" " 定义快捷键保存所有窗口内容并退出 vim
nmap <Leader>wq :wq<CR>
" 禁用 Ex 模式
map Q <Nop>
"
" " 设置快捷键遍历子窗口
" " 依次遍历
nnoremap nw <C-W><C-W>
" " 跳转至右方的窗口
nnoremap <Leader>l <C-W>l
" " 跳转至方的窗口
nnoremap <Leader>h <C-W>h
" " 跳转至上方的子窗口
nnoremap <Leader>k <C-W>k
" " 跳转至下方的子窗口
nnoremap <Leader>j <C-W>j
"
" " 定义快捷键在结对符之间跳转
nmap <Leader>m %

" 重新映射<ESC>
inoremap <Leader>v  <ESC>

"
" 重新定义ESC
imap <Leader>fj <ESC>
" " <<

" 方向键重映射
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>

inoremap <Leader>i <Left>
inoremap <Leader>a <ESC>o

" 让配置变更立即生效
"autocmd BufWritePost ~/.vimrc source ~/.vimrc


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""插件管理
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""


call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'
Plug 'altercation/vim-colors-solarized'
Plug 'tomasr/molokai'
Plug 'vim-airline/vim-airline'
Plug 'scrooloose/nerdcommenter'
Plug 'luochen1990/rainbow'
Plug 'SirVer/ultisnips'
Plug 'junegunn/vim-easy-align'
Plug 'nathanaelkane/vim-indent-guides'
Plug 'derekwyatt/vim-fswitch' " .c和.h的切换 
Plug 'majutsushi/tagbar'
Plug 'Valloric/YouCompleteMe'
Plug 'dyng/ctrlsf.vim'
Plug 'honza/vim-snippets'
Plug 'fholgado/minibufexpl.vim'
Plug 'rdnetto/YCM-Generator'
call plug#end()



" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 配色方案
"
syntax enable
colorscheme solarized
"colorscheme molokai
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<



" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 工程文件浏览
"
" " 使用 NERDTree 插件查看工程文件。设置快捷键,速记:file list
nmap <Leader>fl :NERDTreeToggle<CR>
""修改树的显示图标
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
" " 设置 NERDTree 子窗口宽度
let NERDTreeWinSize=22
" " 设置 NERDTree 子窗口位置
let NERDTreeWinPos="right"
" " 显示隐藏文件
let NERDTreeShowHidden=1
" " NERDTree 子窗口中不显示冗余帮助信息
let NERDTreeMinimalUI=1
" " 删除文件时自动删除文件对应 buffer
let NERDTreeAutoDeleteBuffer=1
""当NERDTree为剩下的唯一窗口时自动关闭
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<




" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 批量注释和反注释 nerdcommenter
"
" <leader>cc : 注释
" <leader>cu : 反注释
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<



" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 彩虹括号
"
let g:rainbow_active = 1 
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<




"" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"" " 代码补全 snippets
""
let g:UltiSnipsSnippetDirectories=["mysnippets"]
let g:UltiSnipsExpandTrigger="<leader><tab>"
let g:UltiSnipsJumpForwardTrigger="<leader><tab>"
let g:UltiSnipsJumpBackwardTrigger="<leader><s-tab>"
""
"" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<





" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 缩进标线 
"
let g:indent_guides_enable_on_vim_startup = 0
let g:indent_guides_auto_colors = 0
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd  guibg=red   ctermbg=3
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=green ctermbg=4
let g:indent_guides_guide_size = 1  "对齐宽度
let g:indent_guides_start_level = 1
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<



" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 快速对齐 
"
" ,a=        对齐等号表达
" ,a:        对齐冒号表达式(json/map等)

" # 默认左对齐
" ,a<space>  首个空格对齐
" ,a2<space> 第二个空格对齐
" ,a-<space> 倒数第一个空格对齐
" ,a-2<space> 倒数第二个空格对齐
" ,a*<space> 所有空格依次对齐

" # 右对齐
" ,a<Enter>*<space>
"
vmap <Leader>a <Plug>(EasyAlign)
nmap <Leader>a <Plug>(EasyAlign)
if !exists('g:easy_align_delimiters')
	  let g:easy_align_delimiters = {}
endif
let g:easy_align_delimiters['#'] = { 'pattern': '#', 'ignore_groups': ['String'] }
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<




" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 缩进标线 
" *.cpp 和 *.h 间切换
nmap <silent> <Leader>sw :FSHere<cr>
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<



" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 使用 ctrlsf.vim 插件在工程内全局查找光标所在关键字,设置快捷键。
"   快捷键速记法:search in project  
" 
nnoremap <Leader>sp :CtrlSF<CR>
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " taglist 列出tag
"
" 设置 tagbar 子窗口的位置出现在主编辑区的左边 
let tagbar_left=1 
" 设置显示/隐藏标签列表子窗口的快捷键。速记:identifier list by tag
nnoremap <Leader>ilt :TagbarToggle<CR> 
" 设置标签子窗口的宽度 
let tagbar_width=32 
" tagbar 子窗口中不显示冗余帮助信息 
let g:tagbar_compact=1
" 设置 ctags 对哪些代码标识符生成标签
let g:tagbar_type_cpp = {
    \ 'kinds' : [
         \ 'c:classes:0:1',
         \ 'd:macros:0:1',
         \ 'e:enumerators:0:0', 
         \ 'f:functions:0:1',
         \ 'g:enumeration:0:1',
         \ 'l:local:0:1',
         \ 'm:members:0:1',
         \ 'n:namespaces:0:1',
         \ 'p:functions_prototypes:0:1',
         \ 's:structs:0:1',
         \ 't:typedefs:0:1',
         \ 'u:unions:0:1',
         \ 'v:global:0:1',
         \ 'x:external:0:1'
     \ ],
     \ 'sro'        : '::',
     \ 'kind2scope' : {
         \ 'g' : 'enum',
         \ 'n' : 'namespace',
         \ 'c' : 'class',
         \ 's' : 'struct',
         \ 'u' : 'union'
     \ },
     \ 'scope2kind' : {
         \ 'enum'      : 'g',
         \ 'namespace' : 'n',
         \ 'class'     : 'c',
         \ 'struct'    : 's',
         \ 'union'     : 'u'
     \ }
     \ }
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<




" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " tags设置  Ctrl + ]:跳转定义 Ctrl + o:返回定义 
"
" 根据自己的工程设置
set tags+=/home/zwx/Templates/tags
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<





" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 基于语义的声明/定义跳转 YCM
"
" 使用 :YcmGenerateConfig 生成配置文件
" 跳转到定义处
nnoremap <leader>jc :YcmCompleter GoToDefinitionElseDeclaration<CR>
" 只能是 #include 或已打开的文件
nnoremap <leader>jd :YcmCompleter GoToDefinition<CR>
" 允许 vim 加载 .ycm_extra_conf.py 文件,不再提示
let g:ycm_confirm_extra_conf=0
" 补全功能在注释中同样有效
let g:ycm_complete_in_comments=1
" 开启 YCM 标签补全引擎
let g:ycm_collect_identifiers_from_tags_files=0
" 补全内容不以分割子窗口形式出现,只显示补全列表
set completeopt-=preview
" 从第三个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=3
" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax=1
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<



" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" " 多文档编辑
"
" 显示/隐藏 MiniBufExplorer 窗口
map <Leader>bl :MBEToggle<cr>
" " buffer 切换快捷键
map <leader>ff :MBEbn<cr>
map <leader>bb :MBEbp<cr>
"
" " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<





""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""实用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设置当文件被改动时自动载入
set autoread
" quickfix模式
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
"代码补全 
set completeopt=preview,menu 
"允许插件  
filetype plugin on
"共享剪贴板  
set clipboard=unnamed 
"从不备份  
set nobackup
"make 运行
:set makeprg=g++\ -Wall\ \ %
"自动保存
"set autowrite
set ruler                   " 打开状态栏标尺
set cursorline              " 突出显示当前行
set cursorcolumn            " 突出显示当前列
set magic                   " 设置魔术
set guioptions-=T           " 隐藏工具栏
set guioptions-=m           " 隐藏菜单栏
" 不要使用vi的键盘模式,而是vim自己的
set nocompatible
" 开启语法高亮
syntax enable
" 语法高亮,允许使用其他的高亮配色方案
set syntax=on
" 去掉输入错误的提示声音
set noeb
" 在处理未保存或只读文件的时候,弹出确认
set confirm
" 自动缩进
set autoindent
set cindent
" Tab键的宽度
set tabstop=4
" 统一缩进为4
set softtabstop=4
set shiftwidth=4
" 用空格代替制表符
set expandtab
" 在行和段开始处使用制表符
set smarttab
" 显示行号
set number
" 历史记录数
set history=1000
"禁止生成临时文件
set nobackup
set noswapfile
"搜索忽略大小写
set ignorecase
"搜索逐字符高亮
set hlsearch
set incsearch
"行内替换
set gdefault
"编码设置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"语言设置
set langmenu=zh_CN.UTF-8
set helplang=cn
" 总是显示状态行
set laststatus=2
" 显示命令
set showcmd
" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
" 侦测文件类型
filetype on
" 载入文件类型插件
filetype plugin on
" 为特定文件类型载入相关缩进文件
filetype indent on
" 保存全局变量
set viminfo+=!
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 字符间插入的像素行数目
set linespace=0
" 增强模式中的命令行自动完成操作
set wildmenu
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=2
" 允许backspace和光标键跨越行边界
set nowrap
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=v
"set selection=exclusive
"set selectmode=mouse,key
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=0
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮显示匹配的括号
"set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
"set matchtime=1
"hi MatchParen ctermbg=red guibg=lightblue
" 关闭括号自动匹配
let loaded_matchparen = 1 
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
" 为C程序提供自动缩进
set smartindent
" 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile *  setfiletype txt
" 禁止光标闪烁
set guicursor=a:block-blinkon0
" 基于缩进或语法进行的代码折叠
"set foldmethod=indent
set foldmethod=syntax
"" 启动 vim 时关闭折叠代码
set nofoldenable  " za,打开或关闭当前折叠;zM,关闭所有折叠;zR,打开所有折叠

YouCompleteMe安装

  • 安装python
sudo apt-get install python
  • 安装依赖软件和库
sudo apt-get install build-essential cmake python-dev python3-dev
  • 安装clang
sudo apt-get install clang
  • vim-plug安装YouComplete完毕后,在目录~/.vim/plugged/YouCompleteMe下执行:
./install.py --clang-completer
sudo ./install.sh
  • 至此,YouComPleteMe插件安装完成。

vim 和 ubuntu 终端配色安装

  • 创建目录
mkdir ~/.dircolors
mkdir -p ~/download/scheme
  • 下载配色
git clone https://github.com/sigurdga/gnome-terminal-colors-solarized.git
git clone https://github.com/seebi/dircolors-solarized.git
  • 配置
cd ~/download/scheme/gnome-terminal-colors-solarized/
./set_dark.sh

依次选择1, YES, 2

在~/.bashrc中添加

eval `dircolors ~/.dircolors/dircolors.256dark`

重启terminal即可。

设置光标不闪烁

ubuntu 下 System Settings -> Keyboard 去掉Cursor blinks in text fields

设置vim使能系统剪切板

需要安装如下插件

sudo apt-get install vim-gnome

这样vim命令行输入:reg,才会发现两个特殊的寄存器:”* 和 “+

安装谷歌中文拼音输入法

安装汉语语言包

sudo apt-get install language-pack-zh-hans

安装谷歌拼音输入法

sudo apt-get install fcitx-googlepinyin

打开SystemSettings-->Language Support,系统会进行语言包搜索,照系统提示安装语言包 键盘输入方式系统”为:fcitx

重启电脑

打开终端,执行打开终端,执行“fcitx-configtool”命令,增加chiese谷歌拼音

3 解决smbus host controller not enabled

修改文本:

sudo gedit /etc/modprobe.d/blacklist.conf

增加如下:

blacklist i2c_piix4

重新生成引导文件:

sudo update-initramfs -u -k all

重启电脑, 点击configureFcitx 加入google pinyin

4 安装linux必备软件

sudo apt-get install build-essential git-core libncurses5-dev flex bison texinfo zip unzip zlib1g-dev gettext u-boot-tools g++ xz-utils mtd-utils gawk diffstat gcc-multilib python git make gcc g++ diffstat bzip2 gawk chrpath wget cpio texinfo lzop

安装64位必备

sudo apt-get install lsb-core lib32stdc++6

5 设置网络

  • 设置为桥接
  • 设置ubuntu的网络IP
sudo vim /etc/network/interfaces

修改如下:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto ens33
iface ens33 inet static
address 192.168.188.210
netmask 255.255.255.0
gateway 192.168.188.1
dns-nameservers 192.168.188.1

重启电脑

  • 通过命令查看IP
ifconfig -a

6 安装并启动OPENSSL

sudo apt-get install openssh-server

安装完成后就可以使用secureCRT来进行连接了

7 安装并启动FTP

sudo apt-get install vsftpd
sudo gedit /etc/vsftpd.conf 

修改配置:

    local_enable = YES
    write_enable = YES

重启

sudo reboot

安装完成后就可以用cureftp进行连接了

8 米尔资料配置

  • 解压米尔文件
unzip MYD-Y6ULX-20190329-m44.zip 
  • 安装Linaro编译器
cd $DEV_ROOT
tar -xvf 03-Tools/Toolchain/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz -C /home/zwx/dragon/tool/gcc/linaro 

增加快速切换脚本

cd ~/dragon/tool/gcc/
vim linaro.sh

增加如下文件:

#!/bin/sh
export PATH=$PATH:/home/zwx/work/dragon/tool/gcc/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin
export CROSS_COMPILE=arm-linux-gnueabihf
export ARCH=arm
posted @ 2019-11-07 10:02  zwxwill  阅读(461)  评论(0)    收藏  举报