17. 开发环境
本章介绍Linux下常用的开发环境,以及在openSUSE下安装和配置这些软件。由于这些软件中的每一个都有非常多的学问,这里只是简单介绍一下,开个门,让大家知道有这些东西的存在。实际学习编程语言和集成开发环境的用法需要参考各自相应的文档和教程书籍。
- 主要涵盖的编程语言:C/C++/Java/Perl/Python;
- 代码阅读和编辑器:Vim/Emacs/KWrite/Gedit;
- 图形界面库: Qt/Gtk+/wxWidgets;
- 集成开发环境:QtCreator/KDevelop/Anjuta/Code::Blocks/Eclipse;
- Linux下的Android 开发环境 ;
- 版本控制软件:Git/Mercurial/CVS/SVN/Bazaar;
- Open Build Service软件打包(18章介绍)。
17.1 代码阅读和编辑器
Vim是vi的进化版,与 Emacs都是老牌的代码编辑器。这两个编辑器已经纵横了几十年了。vim本身是命令行下的编辑器,有个图形界面的包:gvim。这两个在openSUSE的发行DVD里面都有。
openSUSE默认安装了vim,但没装gvim,可以用Yast的软件管理搜索软件包的名字安装,或者执行安装命令:
zypper in gvim
Emacs默认没被安装,可以自己装:
zypper in emacs emacs-info
Kwrite是KDE桌面默认的文本和代码编辑器,KWrite还有个高级版Kate,功能更丰富。Gedit是GNOME桌面默认的文本和代码编辑器。如果是KDE桌面,需要装Gedit的话,可以执行:
zypper in gedit gedit-plugins gedit-plugins-lang
如果是GNOME桌面尝试KWrite/Kate,执行:
zypper in kwrite kate
几乎所有的Linux下的编辑器都带有各种编程语言的语法高亮显示,还有各种编辑器的插件(如gedit-plugins )。可以自己按照喜好定制编辑器。比如这个帖子:
Emacs中打造强大的Python IDE
不管喜好什么编辑器和编程语言,都可以类似地定制。这就是开源的好处之一。
17.2 C/C++和其他编程工具
17.2.1 Linux软件包简介
国内学校计算机编程的课程很多都是从C语言开始的。openSUSE默认没装gcc和g++等编译器。所以很多初次接触openSUSE的会觉得比较坑。这个容易,可以自己安装这些编译器和必要的devel包。这里先简单介绍一下,Linux软件包的名字通常有四种,以audacious播放器为例:
- audacious
- audacious-devel
- audacious-debuginfo
- audacious-debugsource
第一个包audacious是正式的发行包,里面有可执行的二进制文件。audacious-devel是开发包,里面通常是一些头文件和库文件,如果要用到audacious自带的一些头文件、库,那就需要装第二个。后面两个是用于调试的信息和源码,这通常只有调试audacious本身或者调试一些audacious插件才要用,后面两个通常是可以忽略的。
开发软件的时候,除了需要编译、链接工具外,还要一些常用库的发行包和开发包,如glibc和glibc-devel。如果系统里明明看到有如libnotify.so.4的库文件,而编译相关源代码时,却提示找不到libnotify库,那很可能是没装libnotify-devel开发包。
17.2.2 C/C++编译器和开发库
下面进入正题,安装gcc和g++等工具。可以在Yast的软件管理里面,搜索包的名字来安装,也可以用root命令行执行命令:
zypper in gcc gcc-c++
GNU编译器里还有其他编程语言的,如gcc-ada,gcc-fortran ,gcc-java ,gcc-objc等等,可以根据自己需要安装。
安装gcc和gcc-c++这两个软件包,软件包管理器会自动安装它们的依赖包:
binutils, gcc48, gcc48-c++ , glibc-devel, libstdc++48-devel , linux-glibc-devel。
第一个GNU Binutils是一些编程工具的集合,如其中的ar用于打包静态库,ld是链接器。这些是编程必备的。第二个和第三个是gcc和g++的实际的软件包,最后三个是标准C库和C++库的开发包,包含各种头文件和基础库。
安装好后,就可以执行如下编译命令:
gcc hello.c -o hello.out
g++ hello.cpp -o hcpp.out
在当前目录执行hello.out和hcpp.out,需要用 ./ 打头:
./hello.out
./hcpp.out
17.2.3 其他常用编程工具和库
除了编译器,还有其他编程或编译源码常用的工具。这里简单介绍一些:
gdb |
调试器,默认已装,可以调试各种源代码,包括C/C++/Java/Fortran/Object-C等。
|
kdbg |
gdb的图形界面。
|
cpp |
系统 GNU 预处理器,默认已装。
|
autoconf |
自动配置源码和makefile文件的工具。
|
autogen |
自动文本文件生成器,用于生成程序的文件,简化程序的管理。
|
automake |
自动生成GNU风格的Makefile.in文件。
|
bison |
类似Yacc的语法解析生成器。学编译原理的应该知道。
|
flex |
快速词法分析生成器。学编译原理的应该知道。
|
m4 |
是传统Unix宏解析器的一个实现。
|
make |
是编译项目代码必备的,包含make命令行工具和文档。
|
cmake |
跨平台的make工具。如果是使用cmake的Qt项目,还需要软件包 automoc4。
|
ccache |
快速C/C++编译器缓存,加速编译器重复编译的过程。
|
checkinstall |
“make install”命令安装的跟踪器,从源码编译安装程序时常用。
|
nasm |
x86汇编工具。
|
boost-devel |
Boost是 跨平台的C++标准库的扩展库,
包含大量的通用功能代码。这个是其开发包。
|
gsl |
GNU科学计算库,如数值计算等。其开发库是gsl-devel。
|
opencv |
Intel的开源图像视频处理库。其开发库是opencv-devel。
|
sqlite3-devel |
SQLite 3数据库的开发包。
|
zlib-devel |
压缩函数库zlib的开发包。
|
tcllib, tcl-devel, tclx, tix, tk, tk-devel, vtcl |
这些是Tcl/Tk编程的工具和库文件,编译源码的时候可能遇到。
|
上面介绍的当然只是冰山一角,还有茫茫多的工具和开发库。实际需要哪些就装哪些,可以随时在Yast软件管理里面搜索相关的东西。命令行安装也可以,比如:
zypper in kdbg autoconf autogen automake automoc4 bison flex m4 make cmake ccache checkinstall nasm gsl-devel sqlite3-devel zlib-devel
安装时,软件包管理器通常会提示自动装些依赖库和语言包,选“确定”就行了。
17.3 Java和 Eclipse集成开发环境
Java毫无疑问也是非常流行的编程语言。Oracle官方有适合各种操作系统的JDK 7.0/8.0的下载(如果是要装Android开发环境,那么本节的内容可以完全跳过,后面17.8节有更简单的方法)。
openSUSE自带的是开源社区维护的OpenJDK 8,默认装了OpenJDK 8,但是开发包、文档、例子没装,如果要搞Java开发,建议都装上:
zypper in java-1_8_0-openjdk-devel java-1_8_0-openjdk-demo java-1_8_0-openjdk-javadoc
由于openJDK很多东西或快捷方式装在系统路径上,所以不需要配置。直接可用来编译Java程序。
javac hello.java
java hello
Eclipse是IBM公司引领的杰作,很多Java开发都用Eclipse集成开发环境,包括Android开发调试。Eclipse本身是一个跨平台的框架,可以通过插件形式,支持Java、C/C++、Perl、Ruby、Python、数据库等开发。Eclipse需要去官网下载:
http://www.eclipse.org/downloads/
一般Java开发可以下载:Eclipse IDE for Java EE Developers ,根据自己系统选择Linux 32bit或Linux 64bit。如果用于C/C++或建模语言,可以下载其他的版本。
下载后,比如64位系统的eclipse-jee-juno-SR2-linux-gtk-x86_64.tar.gz,可以直接解压缩到用户目录的bin文件夹里,比如解压到 /home/suse123/bin/ 。然后在/home/suse123/bin/eclipse/目录下面直接运行eclipse就行了。初次运行会比较慢,后面会好些。Eclipse工作空间用默认的如/home/suse123/workspace就行。
可以在Eclipse里面新建各种项目,包括Java本身的和Web的都可以。
Eclipse汉化包可以通过在Eclipse里面添加源,然后自动下载中文语言插件。参看这个:
http://zhidao.baidu.com/question/179934518.html
http://www.eclipse.org/babel/downloads.php
对于最新的Juno版本,打开 Eclipse菜单Help——>Install New Software... ,
在打开的对话框里,第一行里输入:
http://download.eclipse.org/technology/babel/update-site/R0.11.0/kepler
名字取为Babel,点击OK。然后等待列出一堆语言包,选上
Babel Language Packs in Chinese(Simplified) 和
Babel Language Packs in Chinese(Traditional) ,一直点Next和Accept,
等下载安装完就搞定了。
17.4 Perl和Python
Linux下著名的3P脚本语言就是Perl、Python、Php。Php放到19章搭建LAMP和LNMP网站介绍。openSUSE默认就安装了Perl和Python。当然,Perl和Python还有非常多的模块,数不胜数,不可能全都装上,这个可以自己看需要什么模块就装什么。
17.5 Qt和QtCreator、KDevelop
Linux下常用的C/C++语言的图形库就数Qt、Gtk+和wxWidgets了。这些都是可以跨平台的,Windows下也可以有。常用的集成开发环境,除了上面的Eclipse,还有KDevelop、QtCreator、Anjuta、Code::Blocks,Gtk+有个可视化编辑的工具glade 。
本节介绍Qt和QtCreator、KDevelop。Qt最初是奇趣公司开发的跨平台图形库。后来整个公司被Nokia买了,Nokia本打算利用Qt开发新的智能手机操作系统Meego,Meego不幸夭折了。Qt也被Nokia出卖给芬兰IT服务公司Digia。虽然遭遇各种变故,Qt的活力不减当年。
Qt是KDE桌面的基石,开发Qt程序可以用简单的文本编辑器,也可用各种复杂的集成开发环境。QtCreator算是后起之秀,现在做的界面和功能都不错,建议使用。Qt基础开发库和QtCreator安装命令:
zypper in libqt5-qtbase-devel libqt5-creator libqt5-qtdoc-devel
需要注意磁盘空间,最后一个文档包体积较大,当然所带的英文资料也够丰富。(在Yast软件管理中搜索 qt5 可以找到 qt5 相关的开发库和工具。)
KDevelop是比较全面的集成开发环境,KDevelop支持多种不同语言,其中包括C、C++、Perl、Python、PHP、Java、Fortran、Ruby、Ada、Pascal、SQL和Bash脚本。支持各种图形库编程,支持的构建系统包括GNU(automake)、cmake、qmake和自定义项目的make(如果您想使用自己的Makefile,KDevelop不会破坏它们的)以及不需要Makefile的脚本项目。安装命令:
zypper in kdevelop5 kdevelop5-pg-qt kdevelop5-plugin-php
安装后运行KDevelop可能会提示Git插件被禁用,因为没装Git。Git等版本控制系统后面介绍,这里先不管。默认的项目模板不多,其他语言支持的应该需要具体配置,参看其文档和主页:
http://www.kdevelop.org/
17.6 Gtk+和Anjuta
Gtk+当然也是非常著名的图形库,是GNOME、Xface、LXDE等桌面环境的基石。openSUSE发行光盘里面有Gtk+ 版本2和版本3的开发包,还有许多其他Gtk+系列的库。Gtk+有一个可视化编辑工具Glade,当然更推荐GNOME桌面集成开发环境Anjuta,Anjuta还有一些插件可以自己装。Gtk+和Anjuta安装命令:
zypper in gtk3-devel gtk-doc anjuta anjuta-lang intltool gtkmm3-devel gtkmm3-doc gtkmm3-tutorial gtkmm3-tutorial-lang
安装Anjuta的时候,软件管理器会装一堆依赖包(好像少了个intltool,一定要补上),其中有subversion,就是SVN版本控制系统。
这些集成开发环境都附带有版本控制系统的插件功能,比较省事。
除了支持C/C++/Gtk+,Anjuta还支持Java/JavaScript/Python等语言和WxWidgets图形库编程。
17.7 wxWidgets和 Code::Blocks/CodeLite
wxWidgets是模仿Windows MFC编程风格的跨平台图形库。
它执行效率比较高,在Windows下像MFC,Linux下就像Gtk+。
网页编辑工具Amaya、FTP软件FileZilla 、
集成开发环境Code::Blocks/CodeLite就是使用wxWidgets开发的。
wxWidgets的开发库需要连网下载。安装命令:
zypper in wxWidgets-devel wxWidgets-docs
wxWidgets的组件比较散,还有一些插件和其他的插件开发包,可以自己选择安装。
Code::Blocks也是流行的开发环境,只是在openSUSE上用的比较少,在openSUSE官方发行DVD和源里面没有。CodeLite也是类似的开发环境,已经进入openSUSE官方源里。
Code::Blocks需要安装libcodeblocks0和codeblocks本身,一键安装的页面:
http://software.opensuse.org/package/libcodeblocks0
http://software.opensuse.org/package/codeblocks
或者使用root命令行安装:
zypper ar -f http://download.opensuse.org/repositories/home:/mad_soft/openSUSE_Leap_42.3/ CB
zypper in libcodeblocks0 codeblocks
Code::Blocks运行比较快,默认就带很多项目模板如
C/C++/Fortran、Gtk+、Qt、wxWidgets、OpenGL、Matlab
等等,这也是它在Linux和Windows下流行的一个原因。
Code::Blocks官网:
http://www.codeblocks.org/
CodeLite已经在openSUSE官方源中,可以直接用Yast软件管理搜索安装。
http://www.codelite.org/
17.8 Android开发环境
Android是著名的开源智能手机操作系统,Android SDK是其开发环境,如果要为Android开发软件包,可以在官网下载 Android Studio:
https://developer.android.com/studio
Android Studio 仅支持64位系统。下载解压后运行 android-studio/bin/studio.sh 文件即可。
17.9 版本控制软件
版本控制软件是开发软件、维护软件源码、软件代码更新、下载和发布的综合管理平台。比如openSUSE的源代码就完全通过git来开发、管理、下载、发布的(如
http://gitorious.org/opensuse
)。
因为开源社区维护开源软件时,很多时候同一软件的开发者不可能始终凑一起开发,所以分布式版本控制软件就很必要。这样可以在各种环境开发和更新软件源码。常用的版本控制系统有:CVS(Concurrent Versions System)、SVN(Subversion)、Git、
Mercurial、Bazaar等。
关于Linux下的版本控制软件,推荐看这个帖子:
http://www.ibm.com/developerworks/cn/linux/l-vercon/index.html
17.9.1 CVS
CVS是一个老牌的版本控制系统,根据维基百科介绍,很多开源或者自由软件项目都使用CVS作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。这些项目包括:Gnome、KDE、GIMP、Wine等。CVS的使用获GNU通用公共许可证授权。
CVS安装命令:
zypper in cvs cvs-doc cervisia
查看CVS内置帮助说明的命令:
cvs --help
17.9.2 SVN
根据维基百科介绍,Subversion,简称SVN,是一个开放源代码的版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。2009年11月,Subversion被Apache Incubator专案所接收。2010年1月,正式成为Apache软件基金会的一个顶级专案。
SVN安装命令:
zypper in subversion subversion-doc kdesvn
还有其他 Subversion相关的包,比如cvs2svn是将CVS源转换成SVN的源, kdesvn是SVN的图形客户端,subversion-server和subversion-tools是搭建SVN服务器的Apache软件模块和管理工具。查看SVN内置帮助说明的命令:
svn help
17.9.3 Git
Git是Linux内核开发老大Linus Torvalds创立的,是为了更好地管理Linux内核。
当然现在不止是内核,发行版如Fedora、openSUSE、Arch Linux,
图形库如Qt、Gtk+,还有很多基础软件源码也都是Git管理、下载和发布的。
Git安装命令:
zypper in git qgit
软件管理器会自动安装依赖包:git-core、git-cvs、git-email、git-gui、git-svn 、git-web、gitk。除了默认的git-gui,还有Gtk+版的gitg图形界面和Qt版的qgit 图形界面。
查看Git内置帮助说明的命令:
git help
安装了Git之后,前面介绍过,几乎所有的集成开发环境都带了各种版本控制软件的功能插件。比如装了Git之后,KDevelop的Git插件就可以正常使用了,不会再报插件禁用的问题。QtCreator可以从版本控制系统管理的项目导入现有项目,也可以通过Git插件发布代码到网上。
17.9.4 Mercurial
根据维基百科介绍,Mercurial 是一个跨平台的分布式版本控制软件。
Mercurial主要由Python语言实现,不过也包含一个用C实现的二进制比较工具。
Mercurial主要由一个命令行程序组成,但现在也有了图形用户界面。
对Mercurial的所有操作都由用不同的关键字作为参数调用程序hg来实现,Hg是参考水银的化学符号而取的名字。Mercurial是以GPLv2发布的自由软件。
采用Mercurial管理项目的软件有Mozilla、OpenJDK、OpenSolaris、Xen、Audacious、Netbeans等。
Mercurial安装命令:
zypper in mercurial mercurial-lang hgview-qt4
查看Mercurial内置帮助说明的命令:
hg help
17.9.5 Bazaar
根据百度百科,Bazaar是一个分布式的版本控制系统,采用 GPL 许可协议,可运行于 Windows、GNU/Linux、UNIX 以及 Mac OS 系统之上。Bazaar 由 Canonical 公司(Ubuntu母公司)赞助。 使用Bazaar的项目或组织包括 MySQL、 Mailman、Launchpad、
Linux Foundation等等,Ubuntu和Debian的很多东西当然也用Bazaar管理。
Bazaar安装命令:
zypper in bzr bzr-lang
查看Bazaar内置帮助说明的命令:
bzr help
本文档翻译自
http://opensuse-guide.org/ 不当之处,还望指正
使用e-mail发送您的英文评论给 admin [at] opensuse-guide.org
或发送意见和建议给中文译者:Libitum (hello[at]libitum.org);
Winland (winland0704[at]126.com)