基于Ubuntu 18.04打造嵌入式arm开发环境

2019-07-12 23:27发布

♧新版本的Ubuntu所使用的vmware工具更改为 “open-vm-tools”,安装该工具方便之后的操作。 sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop 首先安装基本工具: sudo apt install net-tools sudo apt-get install gcc sudo apt-get install vim sudo apt-get install make sudo apt-get install make-guile 安装Git工具:sudo apt install git 安装vim
1)安装
“sudo apt-get install vim” 2)配置vim
“sudo vi /etc/vim/vimrc.local” set nu “显示行号” set tabstop=4 “制表符宽度” set cindent “C/C++语言的自动缩进方式” set shiftwidth=4 “C/C++语言的自动缩进宽度” 配置arm开发环境。
更换ubuntu的更新源,要不升级更新太慢(推荐阿里云的源。)。
1)“sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup”
2)“sudo gedit /etc/apt/sources.list”
3)选择合适的源,把/etc/apt/sources.list里面的东西全部替换了
4)刷新列表“sudo apt-get update”
5)基本命令及环境的安装 安装命令tree “sudo apt-get install tree” 安装chkconfig命令 “sudo apt-get install chkconfig” 安装patch命令 “sudo apt-get install patch” 安装基本的开发环境 “sudo apt-get install build-essential” 安装语法,词法分析器 “sudo apt-get install bison flex” 安装C函数库的man手册 “sudo apt-get install manpages-dev” 安装nfs服务 ”sudo apt-get install nfs-kernel-server” 6)安装串口工具minicom
1、安装
“sudo apt-get install minicom”
2、配置
“sudo minicom -s”
主要是设置串口信息,按enter进入,将串口设备设置为/dev/ttyUSB0,设置波特率为115200,关流控,如下所示:
这里写图片描述 7)配置交叉编译链;
1、准备好交叉编译链的文件;
2、在 /usr/local的目录下新建一个文件夹 arm ;
3、修改环境变量;
修改/etc/profile文件,此文件对所有用户适用 sudo gedit /etc/profile 在最后加上export PATH=$PATH:/usr/local/arm/你的编译链的bin目录所在路径
保存,退出,然后刷新环境变量使其生效: source /etc/profile 4、保存,退出,然后重启系统;
5、检查是否安装成功;
这里写图片描述 编译、安装DNW下载工具。
1)安装所依赖的库:sudo apt-get install libusb-dev
2)编译:gcc -o dnw2 dnw2.c -lusb (以下为dnw2.c代码) /* dnw2 linux main file. This depends on libusb. * * Author: Fox * License: GPL * */ #include #include #include #include #include #include #define QQ2440_SECBULK_IDVENDOR 0x5345 #define QQ2440_SECBULK_IDPRODUCT 0x1234 struct usb_dev_handle * open_port() { struct usb_bus *busses, *bus; usb_init(); usb_find_busses(); usb_find_devices(); busses = usb_get_busses(); for(bus=busses;bus;bus=bus->next) { struct usb_device *dev; for(dev=bus->devices;dev;dev=dev->next) { if( QQ2440_SECBULK_IDVENDOR==dev->descriptor.idVendor && QQ2440_SECBULK_IDPRODUCT==dev->descriptor.idProduct) { printf("Target usb device found! "); struct usb_dev_handle *hdev = usb_open(dev); if(!hdev) { perror("Cannot open device"); } else { if(0!=usb_claim_interface(hdev, 0)) { perror("Cannot claim interface"); usb_close(hdev); hdev = NULL; } } return hdev; } } } printf("Target usb device not found! "); return NULL; } void usage() { printf("Usage: dnw2 "); } unsigned char* prepare_write_buf(char *filename, unsigned int *len) { unsigned char *write_buf = NULL; struct stat fs; int fd = open(filename, O_RDONLY); if(-1==fd) { perror("Cannot open file"); return NULL; } if(-1==fstat(fd, &fs)) { perror("Cannot get file size"); goto error; } write_buf = (unsigned char*)malloc(fs.st_size+10); if(NULL==write_buf) { perror("malloc failed"); goto error; } if(fs.st_size != read(fd, write_buf+8, fs.st_size)) { perror("Reading file failed"); goto error; } printf("Filename : %s ", filename); printf("Filesize : %d bytes ", fs.st_size); *((u_int32_t*)write_buf) = 0x30000000; //download address *((u_int32_t*)write_buf+1) = fs.st_size + 10; //download size; *len = fs.st_size + 10; return write_buf; error: if(fd!=-1) close(fd); if(NULL!=write_buf) free(write_buf); fs.st_size = 0; return NULL; } int main(int argc, char *argv[]) { if(2!=argc) { usage(); return 1; } struct usb_dev_handle *hdev = open_port(); if(!hdev) { return 1; } unsigned int len = 0; unsigned char* write_buf = prepare_write_buf(argv[1], &len); if(NULL==write_buf) return 1; unsigned int remain = len; unsigned int towrite; printf("Writing data ... "); while(remain) { towrite = remain>512 ? 512 : remain; if(towrite != usb_bulk_write(hdev, 0x03, write_buf+(len-remain), towrite, 3000)) { perror("usb_bulk_write failed"); break; } remain-=towrite; printf(" %d% %d bytes ", (len-remain)*100/len, len-remain); fflush(stdout); } if(0==remain) printf("Done! "); return 0; } 3)复制生成的dnw2到bin目录方便调用:sudo cp dnw2 /usr/local/bin
tip:赋值之后给权限 777 方便使用。 安装Wine工具,-to:安装 source insight 3.5
☆相关依赖文件:
sudo apt-get install gcc-multilib g+±multilib
sudo apt-get install xserver-xorg-dev:i386 libfreetype6-dev:i386
sudo apt-get install flex
sudo apt-get install bison
1)进入官网下载wine压缩包:https://www.winehq.org/
2)将下载好的wine压缩包解压后,进入该文件目录;
3)输入./configure进行配置;
4)配置完成后输入make进行编译;
5)执行make install进行安装。
6)安装完以后输入winecfg进入配置界面。 安装输入法:Sogou输入法。
1)安装Fcitx输入法框架 sudo apt install fcitx 2)进入搜狗输入法官网下载linux版本的搜狗输入法安装包;
3)安装 sudo dpkg -i 安装包名 4)若出现错误安装失败,执行以下命令再重新安装。 sudo apt-get install -f 5)安装好之后进入系统设置将“Keyboard input method system:”切换为fcitx。
这里写图片描述
6)重启系统之后就可以进行输入法的切换了。 安装sublime test3编辑器。(注:下载好的*. tar.bz2压缩包解压之后就可以使用。)
1)去官网下编辑器:http://www.sublimetext.com/
2)导入License文件
打开Sublime菜单 -> help -> enter License (文件自行百度);
3)以前版本的sublime text需要汉化包进行汉化,更新后的可以通过localiza中文插件进行汉化。
这里写图片描述
4)使sublime text3可以输入中文。
1、保存下面的代码到文件sublime_imfix.c(位于~目录) #include void gtk_im_context_set_client_window (GtkIMContext *context, GdkWindow *window) { GtkIMContextClass *klass; g_return_if_fail (GTK_IS_IM_CONTEXT (context)); klass = GTK_IM_CONTEXT_GET_CLASS (context); if (klass->set_client_window) klass->set_client_window (context, window); g_object_set_data(G_OBJECT(context),"window",window); if(!GDK_IS_WINDOW (window)) return; int width = gdk_window_get_width(window); int height = gdk_window_get_height(window); if(width != 0 && height !=0) gtk_im_context_focus_in(context); } 2、将上一步的代码编译成共享库libsublime-imfix.so,命令
cd ~
gcc -shared -o libsublime-imfix.so sublime_imfix.c pkg-config --libs --cflags gtk+-2.0 -fPIC (需要安装依赖文件) 3、然后将libsublime-imfix.so拷贝到sublime_text所在文件夹
4、修改文件/usr/bin/sublime_text的内容(具体视个人安装路径变动) sudo gedit /usr/bin/sublime_text 将 #!/bin/sh exec /opt/sublime_text/sublime_text "$@" 修改为 #!/bin/sh LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@" 此时,在命令中执行 subl 将可以使用搜狗for linux的中文输入(注:此处修改时候要给权限 777“” sublime_text才可以执行)。
5、 为了使用鼠标右键打开文件时能够使用中文输入,还需要修改文件sublime_text.desktop的内容(没有的话新建即可,具体视个人安装路径变动)。
注意:
修改时请注意双引号"",否则会导致不能打开带有空格文件名的文件。
此处仅修改了/usr/share/applications/sublime-text.desktop,但可以正常使用了。
opt/sublime_text/目录下的sublime-text.desktop可以修改,也可不修改。(注意:后来出现了问题还是要修改这里)。 [Desktop Entry] Version=1.0 Type=Application Name=Sublime Text 3 GenericName=Text Editor Comment=Sophisticated text editor for code,markup and prose Exec=bash -c "LD_PRELOAD=/home/lin/App/sublime_text_3/libsublime-imfix.so exec /home/lin/App/sublime_text_3/sublime_text %F" Terminal=false MimeType=text/plain; Icon=/home/lin/App/sublime_text_3/Icon/256x256/sublime-text.png Categories=TextEdior;Development;Utility; StartupNotify=ture Actions=Window;Document; X-Desktop-File-Install-Version=0.22 [Desktop Action Window] Name=New Window Exec=bash -c "LD_PRELOAD=/home/lin/App/sublime_text_3/libsublime-imfix.so exec /home/lin/App/sublime_text_3/sublime_text -n" OnlyShowIn=Unity [Desktop Action Document] Name=New Window Exec=bash -c "LD_PRELOAD=/home/lin/App/sublime_text_3/libsublime-imfix.so exec /home/lin/App/sublime_text_3/sublime_text --command new_file" OnlyShowIn=Unity ♒以上就可以从零构建出来一个嵌入式arm在ubuntu 18.04的开发环境。 美化:
美化的话附上之前写的关于Ubuntu18.04美化的帖子工参考:https://blog.csdn.net/qq_33475105/article/details/81240488