-步步搭建嵌入式Linux開發環境 - 基於ubuntu-16.04 64位

 

環境搭建

1. 更改ubuntu源

參考網址html

更改文件sources.listpython

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

改成以下代碼:linux

# 默認註釋了源碼鏡像以提升 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 

更新源c++

sudo apt-get update sudo apt-get upgrade 

備註:經常使用的命令git

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 安裝

安裝VIMgithub

sudo apt-get install vim 

安裝curljson

sudo apt install curl 

安裝vim-plugubuntu

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

備註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
相關文章
相關標籤/搜索