一直想装个Linux系统玩一下的,可是一直又懒得动,怕麻烦。这次是不得不装了,因为工作中,有些程序需要在Linux系统下开发,在公司电脑上装了个虚拟机Virtual Box,然后在上面装了个ubuntu10.04进行软件开发。
在公司使用虚拟机总感觉不爽,而且系统和开发环境都是英文版的,对于初次接触ubuntu并且英文也不是很好的人来说简直是受罪,所以回家自己装了个最新版的ubuntu12.04中文版,以求尽早熟悉该环境下的编程。
装完ubuntu12.04才知道,ubuntu12.04和ubuntu10.04虽然同是ubuntu系统,但是操作界面完全变了样,从表面上简直可以说是两个系统,不过对于我来说,也没有什么,反正两个都不熟悉,本文下面的内容主要是针对ubuntu12.04系统。
下面简单列举一下ubuntu下的常用软件:
1、浏览器:Firefox+ Downthemall(插件)、Chromium
2、视频:SMplayer、GNOMEMplayer
3、音频:Exaile,其实我觉得自带的音乐播放器已经够用了
4、翻译软件:星际译王(stardict)
5、杀毒软件:小红伞(AviraAntivar Personal),安装必要性不大
6、Windows软件模拟器(Wine):可以让Windows软件运行在Linux环境下(当然不是所有的软件都可以),安装和使用时都使用wine,如:wine/<path>/xxx.exe
下面是一些不得不说的命令行操作了:
相对与Windows的图形界面操作不同,Linux的很多操作都需要在终端下输入命令进行,而且由于用户权限的严格限制,在图形界面上很多文件夹是无法操作的,当然也并不是完全不可能,按住组合键Alt+F2,然后输入gksu nautilus用root的身份打开文件浏览器,输入密码,这时你就可以不受权限的限制了。如果是在命令行模式下,提升权限就需要sudo指令了,还可以使用su命令来实现在命令行中提高权限,su命令用于临时切换至任意用户,包括root,如:提升之user1:su user1、提升至root:sudo su root。
常用快捷键:
Ctrl+Alt+F1:进入终端界面
Ctrl+Alt+F7:回到图形界面
Ctrl+Alt+T:进入伪终端,当然我们的大部分操作只需要在伪终端下操作即可
终端常用快捷键:
Shift+Pageup/Page down:向上向下翻页
Tab:命令补全功能
Ctrl+Shift+c:复制
Ctrl+Shift+v:粘贴
Ctrl+a:移动到当前行开始位置
Ctrl+e:移动到当前行结尾
Ctrl+k:删除此处至末尾所有内容
Ctrl+u:删除此处至开始所有内容
Ctrl+l:刷新屏幕
Ctrl+c:杀死当前任务
Ctrl+s:挂起当前shell
Ctrl+q:重新启用挂起的shell
Alt+u:把当前词转化为大写
Alt+l:把当前词转化为消协
Alt+c:把当前词变成首字母大写
Alt+f:光标向前移动一个字符
Alt+b:光标向后移动一个字符
终端改变大小:
F11:全屏
Ctrl+shift+plus:放大
Ctrl+minus:减小
图形界面快捷键:
F10:打开顶部面板的第一个菜单,使用箭头键浏览菜单项。
Super超级键(Win键)操作:
Super:打开dash。
Super长按:启动Launcher。并快捷键列表。
Super+Number:按住超级键,再按1,2,3等数字键:从Launcher打开一个应用程序,当你按住超级键时,每个应用 程序图标上都会显示一个数字,按下对应的数字就会打开盖应用程序。
Super+A:从Launcher打开应用程序窗口。
Super+F:从launcher打开文件和文件夹窗口。
Super+M:从launcher打开音乐窗口。
Super+V:从Launcher打开Vedio视频窗口。
Super+W:伸展模式,缩小所有工作空间中的窗口。
Super+T:打开回收站。
Super+S:Expo模式,缩小所有工作空间,允许你管理窗口。
Ctrl+Alt快捷键:
Ctrl+Alt+L:锁住屏幕。
Ctrl+Alt+上/下/左/右键:移动到新的工作空间。
Ctrl+Alt+Shift+上/下/左/右键:将窗口放入新的工作空间。
Ctrl+Supper快捷键:
Ctrl+Super+Up:最大化当前窗口
Ctrl+Super+Down:最小化当前窗口
Ctrl+Super+D:最小化所有窗口
Ctrl+Super+Left:半最大化当前窗口(左边)
Ctrl+Super+Right:半最大化当前窗口(右边)
Alt快捷键:
Alt+F1:将键盘焦点移到Launcher上,使用箭头键进行移动,按回车即可启动一个应用程序,按下右 箭头键显示Quicklist。
Alt+F2:以特殊模式打开dash,以便运行任何命令。
Alt+F10:打开键盘
Alt+Tab:在当前打开的窗口之间切换。
Alt+F4:关闭当前窗口。
Alt+F7:移动当前窗口(可以使用键盘或鼠标移动)。
常用命令:
~:家目录
pwd:得到当前所在目录
history:显示曾经运行过的命令,不是独立命令,是Base关键字
more:把输出内容用more显示,一页一页往下看,如:ps-A|more ;
也可查看文件,如:more/path/filename , q键退出
less:把输出内容用less显示向上向下翻页,如:ps-A|more ;
也可查看文件,如:more/path/filename , q键退出
man:命令解说员,查看命令用法,在命令之前家man即可,如:manifconfig
chmod:设置权限命令,格式为:chmod[设置权限的对象]+/-[权限] [文件],其中,
[设置权限的对象]取值:u代表所有者,g代表群组,o代表其他
[权限]取值:r代表读,w代表写,x代表执行
例如:赋予脚本可执行权限:chmodu+x ./xxx.sh
>或>>:转向输出,其中>>在文件末尾追加
gcc:编译c语言
g++:编译c++:啊
通配符*代表任意多个字符,?代表任意一个字符
常用操作:
安装软件使用命令:sudoapt-get install <软件包名>
删除软件使用命令:sudoapt-get remove <软件包名>
查看软件安装位置使用:whereis,如:whereisechipse
搜索软件源是否有你想要的软件:sudoapt-cache search <关键字>
下面开始配置我们的开发环境:
第一步当然是设置系统尽量符合我们的操作习惯,所以安装个系统图形界面设置工具Tweak,而且它里面的清道夫功能可以帮助你完美的清除系统垃圾,包括浏览器缓存,旧的内核什么的,还是一个不错的软件,下面就是它的ppa安装方法:
sudoadd-apt-repository ppa:tualatrix/ppa
sudoapt-get update
sudoapt-get install ubuntu-tweak
搭配PHP开发环境(参见http://blog.sina.com.cn/s/blog_568f35c701016tzb.html):
我们使用root账户进行安装,首先切换到root账户,输入命令:sudosu
安装MySQL5
输入命令:apt-getinstall mysql-server mysql-client
安装过程中需要设置root账户密码,系统会作以下提示:
Newpassword for the MySQL "root" user:Repeat password for theMySQL "root" user:
安装Apache2
输入命令:apt-get install apache2
在浏览器输入你服务器地址列入http://127.0.0.1查看Apache2是否工作,如果显示(Itworks!),说明已经工作,Apache在Ubuntu中默认文档根目录为 /var/www,配置文件/etc/apache2/apache2.conf,额外配置存储子目录/etc/apache2
安装PHP5
安装 PHP5和 ApachePHP5 模块:apt-get install php5 libapache2-mod-php5
然后重启apache:/etc/init.d/apache2 restart
测试 PHP5/ 可以建立一个页面:vi/var/www/info.php
输入下面的内容:
<?php
phpinfo();
?>
然后打开浏览器访问(http://127.0.0.1/info.php):
你可以看到一些已经支持的模块。
为PHP5取得MySQL支持
我们需要安装php5-mysql,先查看一下php5的模块
apt-cachesearch php5
然后安装所需模块,例如下面的命令:
apt-getinstall php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagickphp5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspellphp5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
重启 Apache2:
/etc/init.d/apache2restart
然后刷次你http://192.168.0.100/info.php查看模块支持是不是已经增加了。
以上内容参见网页:http://blog.sina.com.cn/s/blog_568f35c701016tzb.html
搭配Java开发环境:
安装Java:
$sudo apt-add-repository ppa:flexiondotorg/java
$sudo apt-get update
$sudo apt-get install sun-java6-jre sun-java6-jdk sun-java6-pluginsun-java6-doc
安装完成后,重启系统,使之生效。重启后在终端输入:$java-version查看是否安装成功。
安装Eclipse:
在终端中输入:
sudoapt-get install eclipse
sudoapt-get install eclipse-pde
sudoapt-get install eclipse-jdt
如果出现eclipse无法打开:Couldnot load SWT library,可以按下列方法解决:
首先执行如下命令更改要使用的javaJDK版本:
#update-alternatives--config java
选择你正确的java版本(当你系统中有多个jdk版本的情况下)
然后执行命令:#cp/usr/lib/jni/libswt-* ~/.swt/lib/linux/x86
重启eclipse即可(参见http://www.zhiwenweb.cn/Category/Tech/ubuntu-12.04-eclipse-swt-open-error.html)
搭配c/c++开发环境:
安装Eclipse:
见搭配Java开发环境中的Eclipse安装
安装CDT插件,方法如下(参见http://rajaruan.blog.51cto.com/2771737/897795):
1、启动eclipse,
2、选择Help->InstallNew Software...,在Workwith的框框下复制下面的地址:http://download.eclipse.org/releases/galileo
3、选择Collaboration->MylynBridge: C/C++ Development,安装,重启eclipse。
4、同上述2、3,选择ProgrammingLanguages->Eclipse C/C++ Development,重启eclipse。
注意:要记得安装C++必要工具,安装的是GCC工具链,Make等一系列开发工具,命令如下:sudoapt-get install build-essential
要不然#include头文件的时候,会出现提示:Unresolvedinclusion: <iostream>
安装完CDT后,安装完虽然可以编译运行c++程序,但有个问题,就是找不到c++标准库的头文件,无法打开诸如之类的文件,编译器警告如下:Unresolvedinclusion:
尽管不影响编译,却无法定位头文件中的符号。原因是没有指定Eclipse的C和C++的目录,可以通过设定Eclipse中C_INCLUDE_PATH和CPLUS_INCLUDE_PATH两个环境变量指定头文件目录。
在 Window-> Preferences -> C/C++ -> Environment 中添加这两个变量:
将C_INCLUDE_PATH设为/usr/include
将CPLUS_INCLUDE_PATH设为/usr/include/c++/4.6.3
其中4.6.3是gcc的版本,用gcc--version可以获得,改成相应版本即可。
对Eclipse+CDT进行优化配置:
一、C/C++环境配置:Window- Preferences - C/C++
1、Appearance,选中Groupmethod definitions in the Outline view
2、CodeStyle,通过New来新建一个代码风格,命名为qpsoft,且初始化为BSD/Allmain,然后按习惯修改一些细节。
3、Editor- Content Assist - Auto-Activation -Delay(ms),原值为500,改为100,则智能提示速度将非常快!
4、Indexer,清空Filesto index up-front的内容,修改Cachelimits的值,尽可能大,可以提高速度!
二、修改智能提示快捷键:
Window- Preferences - General - Keys,输入Content,找到ContentAssist,在Binding中修改为Shift+Space,要顺手的多。
三、其他设置
1.Window - Preferences - General - Editors - Text Editors,选中Showline numbers,设置Printmargin column为110
2.Window - Preferences - General - Workspace,取消Buildautomatically,选中Saveautomatically before build
四、通过插件扩展功能
支持Subversion:Eclipse官方出品,主页位于http://www.eclipse.org/subversive/在安装时可以通过Help->InstallNew Software...,在workwith框框复制地址:http://download.eclipse.org/technology/subversive/0.7/update-site/
Shell编程和正则表达式此处略过,太多了,翻书去
下面说说Linux下的c程序编译:
例如:gccfile1.c file2.c -lpthread -o outfile
将 file1.c和file2.c两个源文件进行编译并链接库pthread生产输出文件outfile,其中-l是标记链接库,-o是标记输出文件
下面拿一个简单的源文件(Hello.c)对编译过程进行详解:
#include<stdio.h>
#defineNUM 10
intmain()
{
inti;
for(i= 0 ; i < NUM ; i++ )
printf(“Helloworld!”);
return0;
}
第一步:预处理(cpp)
gcc-E ./Hello .c > hello_cpp.c
-E参数就是让gcc对Hello.c只进行预处理,也可以直接用cpp命令进行预处理,如下所示:
cpp ./Hello .c > hello_cpp.c
第二步:编译
gcc-S ./Hello .c
-S参数就是让gcc对Hello.c只进行预处理和编译,最后会得到一个Hello.s的汇编代码文件
第三步:汇编(as)
gcc-c ./Hello .c
-c参数就是让gcc对Hello.c只进行预处理、编译和汇编,这样运行之后会输出一个Hello.o的机器码文件,如果想查看这个文件,可以输入指令:hexdump-C ./Hello.o
第四步:链接(ld)
将这些.o文件组装起来,就需要ld(链接)负责了,经过ld组装的程序就可以运行了。
不过上面四个步骤并不需要我们一个一个做,运行一个gcc命令就全搞定了。
程序调试:
GDB:GNUDebugger的缩写,也就是GNU调试器的意思。
在编译的时候加上参数“-g”就可以对程序进行调试了,如:
gcc-g file1.c file2.c -lpthread -o outfile_debug
编译可调试的程序后,就可以叫来GDB来运行他,例如:gdb./outfile_debug
于是,GDB就会接到指令,进入调试界面了,下面是GDB在调试界面下面的一些常用指令:
run命令(简写r):这个命令很好理解,就是从头开始运行程序,在命令“gdb./outfile_debug”后,进入GDB调试环境,但是并没有自动运行其这个程序,需要run一下才行。
break命令(简写b):这个命令用来设置断点,例如:“break12”就是在程序的第12行设置断点。
clear命令:取消断点,如“clear12”
list命令(简写l):列出当前程序源代码。
continue命令(简写c):这个命令是继续执行的意思,程序遇到断点停下来以后,可以用这个命令 继续执行下去,直到碰到下一个断点或者结束。
next命令(简写n):这是单步执行的命令,程序遇到断点停下来以后,执行这个命令可向下执行一句代码。
print命令(简写p):这个命令就是打印变量的值,比如“printi”打印i的值
examine命令(简写x):这个命令用来查看指定内存地址中的数据,
如:examine0x12345678
make机制:
把一堆.c文件编译成一堆.o文件。然后再把.o文件链接成一个成品的二进制文件,有改动的时候只更新单个的.o文件就可以了。
当有某个.c文件被修改以后,make能够根据文件的修改时间智能的判断出哪些模块需要重新编译,重新链接,然后就让gcc重新编译那些改动过的文件,重新生成新的二进制文件。
Makefile的基本格式:
目标:原料
<Tab>加工方法
注意:“加工方法”一行的前面有且必须有一个Tab制表符,不能顶格写,也不能用空格代替Tab。
实例:
all:main.opart1.o part2.o
gccmain.o part1.o part2.o -o mybin
main.o:main.c
gcc-c main.c
part1.o:part1 .c
gcc-c part1.c
part2.o:part2.c
gcc-c part2.c
如果不加参数,make就去找目标是“all”的段落,也可以指定参数,如:makemain.o,那么就只编译main.o这个段落。
注意:“原料”不是必须的,如:
clear:
rm./*.o
rmmybin
要看一个程序依赖哪些库,可以使用ldd命令,如:ldd./eclipse
软件安装包:
解压压缩包(xxx.tar.gz)指令:tar-xzvf xxx.tar.gz
其中:xzvf是命令tar的参数,文件名必须跟在f参数后面,其他参数顺序随意,各参数含义如下:
x:说明要做解包的动作
z:说明是gzip压缩过的
v:显示解压的过程
f:指明要解压的文件
j:说明这个包是用你bzip压缩过的
c:说明要做打包的动作
安装包中configure脚本的作用:
检查系统环境,是否适合当前软件的安装,如果没有问题,则生成makefile文件,一般,在运行./configure指令之前是没有makefile文件的。
生产configure的工具软件:Autoconf