Ubuntu开发笔记
这些操作在ubuntu14.04.1或者ubuntu12.04.5中进行
首先,安装ubuntu12.04(LTS)版本
安装按照高级安装方式,系统分配40G如下:
/dev/sda* ext4 / 14G
/dev/sda* ext4 /work 20G
/dev/sda* swap 2G
/dev/sda* ext4 /home 4G
ubuntu12.04开机黑屏解决方法
实验一:排除硬件故障光盘启动,一切正常,说明不是硬件的问题,顺便检查了硬盘没有问题。
实验二:排除版本启动时按 shift 键出现grub菜单。
选择其他内核版本启动,仍然黑屏。
实验三:查看错误提示 在显示grub菜单的时候,按 e ,可以调整内核启动的参数,把 quiet splash 改成 text splash。
F10 启动后,进入命令行模式。
startx进入图形模式,报 Error:API mismatch: the NVIDIA kernel module ... ,找到故障原因,是nvidia 显卡驱动不完全安装造成无法进入图形模式。复制代码代码如下:sudo apt-get purge nvidia*
sudo apt-get install nvidia-current-updates-dev 重启即可。
安装Vmware tools
点击虚拟机,点击安装Vmware tools出现安装光盘,复制压缩包,解压压缩包到一个位置,运行vmware-install.pl即可命令: sudo ./vmware-install.pl
解决ssh 远程登录ubuntu 终端中文显示乱码[设置ubuntu的语言环境]
在终端直接输入,只对目前的终端实时生效,也可以在/etc/profile末尾行输入export LC_CTYPE="zh_CN.UTF-8",重启永久生效。
# export LC_CTYPE="zh_CN.UTF-8"
# locale
科普:
在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<</span>语言>_<</span>地区>.<</span>字符集编码>,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置:
1. LC_COLLATE
定义该环境的排序和比较规则
2. LC_CTYPE
用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。
3. LC_MONETARY
货币格式
4. LC_NUMERIC
非货币的数字显示格式
5. LC_TIME
时间和日期格式
6. LC_MESSAGES
提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。
7. LANG
LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL。
8. LC_ALL
它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。
C"是系统默认的locale,"POSIX"是"C"的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。
解决gedit编辑器中文乱码问题
先决条件:gedit3.x版本需要安装dconf-editor:sudo apt-get install dconf-tools(ubuntu12.04以上都是这个版本)
先决条件:gedit2.x版本gconf-editor:sudo apt-get install gconf-editor然后按照网上的设置就可以解决这个问题。请百度。
下面一行是我最新才用的命令行,目前在英文环境也没有出现问题。
gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16']"
当然后面两行也是OK的,但是我的ubuntu在英文环境还是会出现乱码,需要在中文环境才行。
gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030', 'GB2312', 'GBK', 'UTF-8', 'BIG5', 'CURRENT', 'UTF-16']"
gsettings set org.gnome.gedit.preferences.encodings shown-in-menu "['GB18030', 'GB2312', 'GBK', 'UTF-8', 'BIG5', 'CURRENT', 'UTF-16']"
当然也可以输入dconf-editor在里面修改,请参考我转载的文章。
修改places
从13.04或13.10开始,Ubunt文件管理器(Nautilus)侧边栏的顶部显示为“位置(Place)”,大都是我一年用不着几次的文件夹,一直看它不顺眼。现在装UbuntuKylin 14.04,竟然还是没有改观。只好大肆搜索,果然不是我一个人对此觉得不爽,
原文在此:http://jamesmcminn.com/2012/12/removing ... -6-places/
简单来说就是修改个人目录 ~/.config 下的 user-dirs.dirs 文件,将你不想要的都注释掉或者删除:# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
XDG_DESKTOP_DIR="$HOME/Desktop"
#XDG_DOWNLOAD_DIR="$HOME/Downloads"
#XDG_TEMPLATES_DIR="$HOME/Templates"
#XDG_PUBLICSHARE_DIR="$HOME/Public"
#XDG_DOCUMENTS_DIR="$HOME/Documents"
#XDG_MUSIC_DIR="$HOME/Music"
#XDG_PICTURES_DIR="$HOME/Pictures"
#XDG_VIDEOS_DIR="$HOME/Videos"
保存好后在本目录下命令行输入
echo "enabled=false" > ~/.config/user-dirs.conf
重启看看,是不是清爽了。
安装谷歌输入法
>sudo apt-get install ibus-googlepinyin log out后重启添加输入法即可。
如何修改终端用户名颜色修改为红色
整个操作代码流程图片和最终显示结果
输入>echo $PS1
显示:如上图
在个人用户文件夹输入
输入gedit ~/.bashrc
修改这几行代码
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir
重改为:
# if [ "$color_prompt" = yes ]; then
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# else
# PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
# fi
unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir
其实也就是终端的PS1的设置注释掉然后在末尾一行重写。在末尾一行加上:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[00m\]@\h:\w\$ '
保存后退出,然后source一下,也就是输入>source ~/.bashrc
在root文件夹里面位置 /root也同样操作一遍。
根据个人喜好可以自由定制,也可以这样修改:
customer:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[00m\]@\h:\[\033[01;33m\]\w\[\033[00m\]\$ '
root:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[00m\]@\h:\[\033[01;33m\]\w\[\033[00m\]\$ '
截图效果如下:
aaarticlea/jpeg;base64,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" alt="" />
Git使用操作:
先安装git:
sudo apt-get install git git-core
在第一次使用Git时,你需要告诉你的协同开发者,你是谁以及你的邮箱,在你提交的时候,Git需要这两个信息。具体通过以下命令设置:
git config --global user.name “XXX”
git config --global user.email XXXXXXX@gmail.com
当你通过ssh协议与远端服务器进行通信的时候,你可以通过以下命令生成ssh密钥对:
ssh-keygen -C 'XXXXXX@gmail.com' -t rsa
(默认使用前面那行命令,这行也可以)ssh-keygen -t rsa
如果你没有指定密钥名称和存放路径的话,它默认把两个不对称密钥放在你的家目录下的.ssh目录下,密钥文件默认名称为id_rsa和id_rsa.pub,前者是私钥,后者是公钥。中间可能会要你设定访问密钥密码,这个可以设,可以不设,但为了安全考虑,还是建议你设一个访问密码。否则,意味着任何持有你密钥的人都可以使用该密钥。
将Public Key 添加到GitHub
打开你的GitHub->SSH Public Key->点击“Add another public key”, 将你的public key(id_rsa.pub)的内容拷贝到GitHub中
可以使用 ssh -v git@github.com 命令来测试链接是否畅通
这些设定完之后,你可以通过获得任何一个公开的代码仓库来检测你的git是否工作正常。比如下面这个:
$ git clone https://github.com/jackyh/qt210_ics_uboot.git
$ cat ~/.ssh //检查计算机ssh密钥
$ git config --list //git配置环境
$ git branch -a //查看所有的分支名称
$ git branch <分支名> //创建分支
$ git checkout <分支名> //切换分支
$ git pull origin master:master | git pull //更新远程分支到本地
$ git status
从Github 用git下载的四种方法
以gerrit-trigger-plugin为例,下面的链接都是从相应页面上直接拷贝的。
法一:不用github的账号,打开这个库在github上的主页,运行下面命令即可
(read only)运行命令$git clone https://github.com/jackyh/qt210_ics_kernel3.0.8
下面的三种方法都要先在github上注册账户,然后生成相应的ssh key,并把public key添加到个人账户里面,详见github帮助
法二:(read+write)$git clone git@github.com:jackyh/qt210_ics_kernel3.0.8.gitit (需要输入密码) (常用第二种)
法三:(read+write)$git clone https://jackyh@github.com/jackyh/qt210_ics_kernel3.0.8.git (还没有试过)
会提示输入密码,注意此处的密码不是你在github上账户的密码,而是当前登录系统用户的密码。 (这个真不知道)
法四:(read only)$git clone git://github.com/jackyh/qt210_ics_kernel3.0.8.git
Git创建远程仓库
1.创建一个本地git仓库
$ mkdir gittest
$ cd gittest/
$ git init
2.向仓库添加一个文件并提交到本地
$ echo "first file" >> README
$ ls
README
$ cat README
first file
$ git add .
$ git commit -a -m "add README"
[master (root-commit) 85b54e5] add README
1 file changed, 1 insertion(+)
create mode 100644 README
$ git remote add origin git@github.com:chsry/gittest.git
$ git push origin master
2、git@github.com:chsry/gittest.git 这个地址必须是存在的,已经创建好了的仓库。
Minicom的安装和使用
下载安装minicom: sudo apt-get install minicom
USB转串口,所以是ttyUSB0,不过还是可以通过命令查看一下:dmesg | grep usb
插入U转串,查看设备驱动加载情况: lsmod 或者输入 lsmod | grep usbserial
配置: sudo minicom -s
选择“Serial port setup”,出现串口配置菜单:
按A,修改串口设备,如使用U转串就改为/dev/ttyUSB0,按回车确定
(2)B - upload 从此处读取上传的文件(PC ---> 开发板)
(1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。这个功能在查看内核的启动信息时很有用。
(3)C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。
adb的安装和使用
安装: apt-get install android-tools-adb
JRE vs OpenJDK vs Oracle JDK
在我们继续了解如何安装Java之前,让我们快速地了解JRE、OpenJDK和Oracle JDK之间的不同之处。
JRE(Java Runtime Environment),它是你运行一个基于Java语言应用程序的所正常需要的环境。如果你不是一个程序员的话,这些足够你的需要。
JDK代表Java开发工具包,如果你想做一些有关Java的开发(阅读程序),这正是你所需要的。
OpenJDK是Java开发工具包的开源实现,Oracle JDK是Java开发工具包的官方Oracle版本。尽管OpenJDK已经足够满足大多数的案例,但是许多程序比如Android Studio建议使用Oracle JDK,以避免UI/性能问题。
检查Java是否已经安装在Ubuntu上
打开终端,使用下面的命令:
java -version
如果你看到像下面的输出,这就意味着你并没有安装过Java:
The program ‘java’ can be found in the following packages:
*default-jre
* gcj-4.6-jre-headless
* openjdk-6-jre-headless
* gcj-4.5-jre-headless
* openjdk-7-jre-headless
Try: sudo apt-get install
在Ubuntu和Linux Mint上安装Java
看了各种类型‘Java’的不同之后,让我们看如何安装他们。
在Ubuntu和Linux Mint上安装JRE
打开终端,使用下面的命令安装JRE:
sudo apt-get install default-jre
在Ubuntu和Linux Mint上安装OpenJDK
在终端,使用下面的命令安装OpenJDK Java开发工具包:
sudo apt-get install default-jdk
特殊地,如果你想要安装Java 7或者Java 6等等,你可以使用openjdk-7-jdk/openjdk-6jdk,但是记住在此之前安装openjdk-7-jre/openjdk-6-jre。
在Ubuntu和Linux Mint上安装Oracle JDK
使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
打印消息:
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) Client VM (build 25.51-b03, mixed mode)
表示已经安装好了-chsry
如果你想安装Java 7(i.e Java 1.7),在上面的命令中用java7代替java8。
安装Java JDK6.0:
在ubuntu12.04版本以下按照的办法
>sudo gedit /etc/apt/source.list
末尾添加deb http://old-releases.ubuntu.com/ubuntu/ hardy multiverse(之前的地址不能用,改为这个!!!!)
将"deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse" 改为"deb http://old-releases.ubuntu.com/ubuntu/ hardy multiverse"就可以了
$ sudo add-apt-repository "deb http://old-releases.ubuntu.com/ubuntu/ hardy multiverse" (如果按照上面的设置此行代码就不用了)
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
JDK6.0在ubuntu14.04版本无法使用!!!!!
关于ubuntu的sources.list总结
以一行为例: deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
每一行的开头是deb或者deb-src,分别表示直接通过.deb文件进行安装和通过源文件的方式进行安装。
deb或者deb-src字段之后,是一段URL,之后是五个用空格隔开的字符串,分别对应相应的目录结构。在浏览器中输入http://archive.ubuntu.com/ubuntu/,并进入dists目录,可以发现有5个目录和前述sources.list文件中的第三列字段相对应。任选其中一个目录进入,可以看到和sources.list后四列相对应的目录结构。
Ubuntu Linux 环境变量PATH设置
>export PATH=/bin/:$PATH
Ubuntu Linux系统环境变量配置文件:
/etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
/etc /environment : 在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量。
~/.profile : 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
/etc/bashrc : 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bashrc : 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
PASH环境变量的设置方法:
方法一:用户主目录下的.profile或.bashrc文件(推荐)
登录到你的用户(非root),在终端输入:
$ sudo gedit ~/.profile(or .bashrc)
可以在此文件末尾加入PATH的设置如下:
export PATH=”$PATH:your path1:your path2 ...”
保存文件,注销再登录,变量生效。
该方式添加的变量只对当前用户有效。
方法二:系统目录下的profile文件(谨慎)
在系统的etc目录下,有一个profile文件,编辑该文件:
$ sudo gedit /etc/profile
在最后加入PATH的设置如下:
export PATH=”$PATH:your path1:your path2 ...”
该文件编辑保存后,重启系统,变量生效。
该方式添加的变量对所有的用户都有效。
方法三:系统目录下的 environment 文件(谨慎)
在系统的etc目录下,有一个environment文件,编辑该文件:
$ sudo gedit /etc/environment
找到以下的 PATH 变量:
PATH="<......>"
修改该 PATH 变量,在其中加入自己的path即可,例如:
PATH="<......>:your path1:your path2 …"
各个path之间用冒号分割。该文件也是重启生效,影响所有用户。
注意这里不是添加export PATH=… 。
方法四:直接在终端下输入
sudo export PATH=/usr/local/arm/arm-2009q3/bin/:$PATH
或者sudo export PATH="$PATH:your path1:your path2 …"
这种方式变量立即生效,但用户注销或系统重启后设置变成无效,适合临时变量的设置。
注 意:方法二和三的修改需要谨慎,尤其是通过root用户修改,如果修改错误,将可能导致一些严重的系统错误。因此笔者推荐使用第一种方法。
另外嵌入式 Linux的开发最好不要在root下进行(除非你对Linux已经非常熟悉了!!)
以免因为操作不当导致系统严重错误。
问题解决1: 因为不小心在 etc/environment里设在环境变量导致无法登录
提示:不要在 etc/environment里设置 export PATH这样会导致重启后登录不了系统
解决方法:
在登录界面 alt +ctrl+f1进入命令模式,如果不是root用户需要键入(root用户就不许这么罗嗦,gedit编辑会不可显示)
/usr/bin/sudo /usr/bin/vi /etc/environment
光标移到export PATH** 行,连续按 d两次删除该行;
输入:wq保存退出;
然后键入/sbin/reboot重启系统(可能会提示need to boot,此时直接power off)
问题解决2:
root@lenovo:~# gedit /etc/profile
Command 'gedit' is available in '/usr/bin/gedit'
The command could not be located because '/usr/bin' is not included in the PATH
environment variable.
原因分析:
是因为我在/root/.bashrc末尾一行添加了PATH=/usr/local/arm/arm-2009q3/bin/:$PATH
之后出现的,导致了PATH只有这一个路径其他路径都没有了
解决办法就是在终端输入export PATH=/usr/bin/:$PATH
那个命令的路径没有,就输入那个,然后再进入gedit /root/.bashrc
删除自己添加的错误的PATH
>之前这样修改错误的,应该在/root/.bashrc末尾一行添加export PATH=$PATH:/usr/local/arm/arm-2009q3/bin
问题解决3:
在嵌入式开发中如果确实路径直接在终端添加,这样子重启后就消失,对系统无害
># export PATH=$PATH:/usr/local/arm/arm-2009q3/bin
或者export PATH=/usr/local/arm/arm-2009q3/bin/:$PATH (应该是一样的,别忘了加export就行)
># echo $PATH
/usr/local/arm/arm-2009q3/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
用SSH2客户端登陆UBUNTU
前提工作:两台机器能够ping 通IP地址。原来ubuntu默认的ssh服务是没有安装的.SSH分客户端openssh-client和openssh-server
如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server
sudo apt-get install openssh-server
然后确认sshserver是否启动了:
ps -e |grep ssh
如果看到sshd那说明ssh-server已经启动了。
如果没有则可以这样启动:sudo /etc/init.d/ssh start
ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。
然后重启SSH服务:
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
然后使用以下方式登陆SSH:
ssh username@192.168.0.100 username为192.168.0.100机器上的用户,需要输入密码。断开连接:exit
或者 ssh -l username 192.168.100.88
开启ssh服务:sudo service ssh start
关闭ssh服务:sudo service ssh stop
注:可以使用SecureCRT来登陆SSH 选择ssh2,hostname:IP地址,Username:chsry.(tipsbychsry:验证可用)
Windows 使用ftp服务给ubuntu传输文件设置
默认没有安装,需要>sudo apt-get install vsftpd
安装VSFTPd后,其默认为匿名FTP服务器,只允许匿名用户登录。
>sudo gedit /etc/vsftpd.conf
把listen=YES | anonymous_enable=YES | local_enable=YES | write_enable=YES | local_umask=022 前面的#去掉,保存退出,然后重启>service vpftpd restart
使用CuteFTP等工具即可连接ubuntu。(tipsbychsry:验证可用)
Ubuntu下共享文件夹给windows
$ sudo apt-get install samba
然后在需要共享的文件夹右键设置共享,使用ifconfig获取ubuntu的ip地址,在windows访问此ip地址即可。
作者:chsry
出处:www.cnblogs.com/chsry
日期:2016-02-16-11:49:26
本博客文章,大多系个人整理开发,转载请注明出处
Ubuntu开发笔记的更多相关文章
- libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板
前言 Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...
- Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示
前言 在ubuntu上实现MPlayer播放器播放音乐. Demo Mplayer MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...
- zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
前言 方便做嵌入式arm的交叉移植zlib库. Zlib库 zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使 ...
- RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像
前言 buildroot虽然灵活,但是基于实际情况,本身是侧重驱动和应用定制开发的只定制一次文件系统投入有点多,还不如直接ubunt自己交叉编译依赖库,做一些库的移植裁剪. 于是本篇就使用ubu ...
- FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待 前言 将ffmpeg移植到海思H ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建
前言 本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8. FFmpeg简介 FFmpeg是领先的多媒体框架,能够解码 ...
- zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板
前言 Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下. 版本编译引导 zlib在windows上的mingw32 ...
- Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输
前言 搭建Hi3516的基础虚拟机,为交叉编译环境搭建前期工作.后续会编译一个基本的C语言程序Demo,在HI3516上跑. 虚拟机 开发本对虚拟机做了一些基本要求,如下图: 其实重 ...
随机推荐
- C# 文件下载 : WebClient
最近更新了一个下载小工具,主要提升了下面几点: 1. 在一些分公司的局域网中,连接不上外网 2. 服务器上的文件更新后,下载到的还是更新前的文件 3. 没有下载进度提示 4. 不能终止下载 下面和大家 ...
- Jquery.Qrcode在客户端动态生成二维码并添加自定义Logo
0 Jquery.Qrcode简介 Jquery.Qrcode.js是一个在浏览器端基于Jquery动态生成二维码的插件,支持Canvas和Table两种渲染方式,它的优点是在客户端动态生成,减轻了服 ...
- 在CentOS 6.5上安装python2.7
1.yum groupinstall “Development tools” 2.安装编译Python需要的组件 yum install zlib-devel bzip2-devel openssl- ...
- Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]
[虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试] 一.增删改查 cmd.ExecuteReader();执行查询, ...
- Java中,方法的重写、重载的区别,以及多态的实例
首先我们要明白什么是重写和重载 重写(override):子类方法覆盖了父类的方法. (类与类之间继承的关系) 例:父类代码 public class Deng { public void Qi ...
- 什么是Servlet?
HTML只能用来保存静态内容,而通常情况下,静态页面很难满足实际应用的需要,鉴于此,动态页面被引入.所谓动态页面,指的是能够根据不同时间,不同用户而显示不同内容的页面,例如常见的论坛.留言板.电子商务 ...
- Elasticsearch初步使用(安装、Head配置、分词器配置)
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.ElasticSearch简单说明 a.ElasticSearch是一个基于Lu ...
- Dog_Hybird的诞生
起因 开玩笑说“iOS搞不动了”,另外一方面iOS组的哥哥们给力,少一个我也妥妥的.又听闻web前端组来了一个不得了的人物,“老司机,带带我”这种机会不能错过,1个多月前就申请转web前端了.开始是苦 ...
- [python]数据整理,将取得的众多的沪深龙虎榜数据整一整
将昨日取得的众多的沪深龙虎榜数据整一整 提取文件夹内所有抓取下来的沪深龙虎榜数据,整理出沪深两市(含中小创)涨幅榜股票及前5大买入卖出资金净值,保存到csv文件 再手动使用数据透视表进行统计 原始数据 ...
- CSS3图片翻转切换案例及其中重要属性解析
图片翻转切换,在不使用CSS3的情况下,一般都是使用JS实现动画,同时操作元素的width和left,或者height和top以模拟翻转的效果,并在适当时候改变src或者z-index实现图片切换. ...