ubuntu 步步为营之入门篇
本节主要内容:
一----ubuntu vm下建立
二----网络设置
三----软件获取
四----输入法安装
五----与windows文件共享
一、ubuntu VM下建立
我的电脑安装的是windows xp-sp3,用的虚拟机是从多特下载的破解版5.5.3
下载的ubuntu是10.04.3 默认的gnome桌面版(这个比较新支持更新时间长。11.04不太习惯)
ubuntu10.4下载页面
http://releases.ubuntu.com/lucid/
具体安装系统的方法网上很多具体可以参考
http://hi.baidu.com/liang888%BA%C3/blog/item/d9d0531672eff413962b43e9.html
如有故障可以参考
http://hi.baidu.com/hainei_/blog/item/bd24803f69398f3370cf6c17.html
VMware tools安装
1、安装编译环境:
用鼠标点左上角的“应用程序”→“附件”→“终端”,
输入:uname -r (回车)
回车后会看到Ubuntu内核版本(下面的命令会用到),然后输入:
sudo apt-get install build-essential linux-headers-内核版本
接下来的操作比较简单,除了等还是等.....
当终端回到可输入的状态时就可以进行下一步了。
2、用鼠标点击VMware菜单栏中“虚拟机” ->“安装 VMware 工具...”(对应的英文版是“VM”->“Install VMware Tools...”),看到有光盘被加载,在桌面上会出现一个虚拟光驱,打开它。
3、选择后缀名为“.tar.gz”的文件,复制到桌面上,点右键解压。
4、在终端中输入:
cd 桌面/vmware-tools-distrib(对应的英文版则应输入:cd Desktop/vmware-tools-distrib)
5、继续在终端中输入:
sudo ./vmware-install.pl
接下来就是机械式操作了,有问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
提示就回车,不用多想,节省时间。直到最后会让我们选择屏幕分辨率(好像是按数字键选的),按电脑屏幕的大小和喜好选。
6、最后一步:Ubuntu重启
二、网络设置
如果xp可以联网那么设置一下vm就可以让ubuntu也上网了
vm提供了三种联网方式,我选择的是NAT方式
1、把你的虚拟网卡VMnet8设置为自动获得IP、自动获得DNS服务器,启用。
2、把你虚拟机中操作系统的“本地连接”也设置为自动获得IP、自动获得DNS服务器,
3、将虚拟机的上网方式选为NAT
右键你要设置的虚拟机选“设置”,在“硬件”中选“以太网”, 将右边的网络连接改为NAT-确定
4、点菜单栏里的“编辑”-选“虚拟网络设置”,先将“自动桥接”给去掉(去掉钩钩),再选“DHCP”开启DHCP服务,点“开始”-应用,再按同样的方法开启“NAT”的功能。
注意:在nat里面要记住上面写的网关地址是多少假如是192.168.140.2
5、最重要的是你的两个服务必须开启:VMware DHCP Service 和VMware NAT Service
具体操作如下:
开始---设置--控制面板---管理工具---服务
确保 VMware DHCP Service 和VMware NAT Service 服务已经启动
6、接下来的步骤也很重要就是在ubuntu中配置网络
进入ubuntu 菜单的system------preference---netwrok connections>>>有线选第一个网卡 --编辑--
ipv4 设为手动然后输入
ip192.168.140.130
输入掩码255.255.255.0
输入网关192.168.140.2
dns 可以输入 192.168.140.2
保存
打开浏览器是不是可以了?
http://wenku.baidu.com/view/0ded503a376baf1ffc4fad21.html
三、软件获取
软件在线安装一般用的是apt-get
但是我们的系统刚安装,软件的源还未设置好所以不能直接下载
软件源设置有两种办法一种是用命令 一种是用界面的方法,其实本质是一样的
这里介绍界面的比较简单
1、单击“System/系统管理(Administration)/软件源(Software Sources)”;输入用户口令并点击“OK”按钮。进入Software Sources对话框。
2、单击“Download from”右侧的列表框,选择“Other..”进入如图所示Choose a Download Server对话框。拉动左侧滚动条,选中“China”下面任一服务器单击“Choose Server”按钮,然后点“Close”。
3、回到Software Sources对话框。单击“Close”按钮后,系统提示是否刷新软件库,点击“Reload”刷新。(我选的是163 的)
http://wiki.ubuntu.org.cn/Qref/Lucid
四、输入法安装
Ubuntu下SCIM应该是最好的中文输入法了,它与搜狗差不多,下面介绍它的安装方法: 1)终端输入:sudo apt-get remove scim 这一步是删除安装系统的时候装的那个scim,实际是个假的,我这里不可以用
2)sudo apt-get install scim 这一步下载安装scim输入法。下载完了系统会自己装上,中间会有提示,直接y就行了
3)sudo apt-get install scim-chinese 这一步是下载安装中文输入法,前面那一步只是下载一个可以运行输入法的平台,现在是在这个具体平台上安装中文输入
4) sudo gedit /etc/X11/Xsession.d /95xinput 这个步骤是新建一个95xinput的文件,该文件的具体内容如下: /usr/bin/scim -d XMODIFIERS="@im=SCIM" export XMODIFIERS export GTK_IM_MODULE=scim 把以上内容复制到新建的95xinput文件中,然后,确定无误后,保存,退出gedit编辑器
5)exit 退出终端
6)Logout,重新登录,然后用Ctrl+Space就可以激活中文输入法
五、与windows文件共享
vmtools装好之后会有一个共享文件夹,在没有装的情况下我们可以使用
samba来实现这一功能
1、Samba的几个套件,安装及简单配置
samba,samba-client, samba-common
一句 sudo apt-get install samba samba-client 就能全部装上
启动samba也很简单: sudo /etc/init.d/samba start
设置samba的密码, 可以先添加samba用户, 必须是系统用户。
smbpasswd -a yourname
(详细步骤http://blog.sina.com.cn/s/blog_4ecaee730100qlsn.html)
2、互访
1)windows访问ubuntu
windows访问ubuntu很简单, 先在ubuntu上设置共享目录即可, 鼠标右键点目录,选择sharing options, 够选share this folder,需要的话也可以够选下面的allow write 。这时在windows的网络邻居中的网络中查找就能找到共享目录了,通过//host也行
2)ubuntu访问windows
第一种:在ubuntu的网络中直接浏览访问 位置->网络,点击界面中windows网络->workgroup,在workgroup组中就可以看到windows计算机名,双击会弹出输入用户名和密码的对话框,将我们上面设置smb的用户名和密码输入就可以进行访问。
第二种:用ubuntu 系统自带的连接到服务器功能访问
位置->连接到服务器,在服务类型中选择“windows共享”,在服务器中输入windows计算机的ip地址或计算机名,点击连接,这样在系统桌面中就会显示一个连接到windows 计算机的文件卷,里面就是windows计算机的共享目录了。 同样在访问的时候要输入smb的用户名和密码。
第三种:用mount’挂载windows的共享目录到本地磁盘
首先要在ubuntu系统中建立一个挂载点,在这里我们建立的挂在点为 /mnt/wind
同样在保证网络连接正常,且windows中有共享目录的前提下,进行一下操作
以windows的ip为192.168.0.1,共享文件夹为share为例
命令如下:
mount -t smbfs –o username=wangyh,password=123456 //192.168.0.1/share /mnt/wind
有是这样在访问的时候会出现中文乱码的问题,这样我们可以按下面命令来执行,可以解决这个问题
mount -o smbfs -o iocharset=uft8,codepage=cp936,clmask=777,fmask=777,userneme=wangyh,password=123456 //192.168.0.1/share /mnt/wind
注解:usename和password都为smb的用户和密码,如果要详细了解mount命令,使用man mount在终端查看详细用法
第四种:使用smbclient 命令
一般来讲先列出所有共享目录,命令如下:
smbclient –L //192.168.0.1/ -U yourname
输入smb的密码后,将看到共享目录列表。
假设进入共享目录share,命令如下:
smbclient //192.168.0.1/share -U yourname
之后将看到一个smb:>
已经进入了smb模式,有些像ftp,敲help可以查看相关命令,get,put可以下载和上传文件。
具体可以参考
http://bbs.chinaunix.net/thread-2302433-1-1.html
(字体,tft,rar等设置参看步步为营其他篇章)
Ubuntu 中的 root 帐号默认是被禁用了的。在这种情况之下,如果你想要使用 root 的权限来干些事情,就需要 sudo 指令。对某些朋友来说,他们可能需要激活 Ubuntu 中的 root 帐号。
在 Ubuntu 中激活 root 帐号的过程如下:
1、在终端执行 sudo passwd root 指令后,系统将会提示你设置一个新的 root 帐号密码。
2、点击 System -> Preferences -> Login Window 菜单,并切换到 Security 选项页,然后选中其下的“Allow local system administrator login”选项。
ubuntu 步步为营之嵌入式开发环境搭建
本节主要包括:
一------minicom配置(linux下的串口)
二------nfs配置(可以读写开发板里面的文件)
三------ftp配置(传递文件)
四------arm-linux-gcc/gdb等配置(交叉编译工具)
五------automake,automake autoconf autogen工具(帮助我们生成makefile)
一、minicom配置
linux下的串口,可以和开发板通过串口通信显示
安装:
sudo apt-get install minicom
配置:
1 . 在终端中输入minicom以启动minicom;
2. 先按下Ctrl + a, 放开, 再按o, 出现配置菜单.
3. 选择 Serial port setup, 此时所示图标在“Change which setting”中,键入“A”,此时光标移到第A项对应处:串口COM1对应ttyS0, COM2对应ttyS1. (注意选择)
具体的配置信息如下所示:
Serial port setup [Enter]
+-------------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program -: |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-------------------------------------------------------------+
注意: 如果没有使用USB转串口,而是直接使用串口,那么Serial Device要配置为/dev/ttyS0(如果使用USB转串口,则需要查看dev下是否存在ttyUSB0,若没有,则创建一个:mknod /dev/ttyUSB0 c 188 0)
对波特率,数据位和停止位进行配置,键入“E”,波特率选为115200 8N1 (奇偶校验无, 停止位1),硬/软件流控制分别键入“F”“G”并且都选NO.
在确认配置正确之后,可键入回车返回上级配置界面,并将其保存为默认配置。(即save setup as dfl),之后重启minicom是刚才配置生效,在连上开发板的串口线后,就可在minicom中打印正确的串口信息了。
这时候可以打印串口的信息了,但是在通过串口用xmodem
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
烧写内核时会提示没有xmodem协议。
所以还必须安装软件包:lrzsz sudo apt-get install lrzsz
这时候就可以正常地用minicom通过串口烧写内核了。
下次在输入minicon 即可直接进入。
命令minicom是进入串口超级终端画面,而minicom -s为配置minicom。
说明/dev/ttyS0 对应为串口0 为你连接开发板的端口。
注意:非正常关闭minicom,会在/var/lock下创建几个文件LCK*,这几个文件阻止了minicom的运行,将它们删除后即可恢复
组合键的用法是:先按Ctrl+A组合键,然后松开这两个键,再按Z键。另外还有一些常用的组合键。
(1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。这个功能在查看内核的启动信息时很有用。
(3)C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。
4、配置文件所在目录
Ctrl + A --> O
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols -|
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
+--------------------------+
选择"Filenames and paths"
+-----------------------------------------------------------------------+
| A - Download directory : /home/crliu |
| B - Upload directory : /tmp |
| C - Script directory : |
| D - Script program : runscript |
| E - Kermit program : |
| F - Logging options |
| |
| Change which setting? |
+-----------------------------------------------------------------------+
(1)A - download 下载文件的存放位置(开发板 ---> PC)
开发板上的文件将被传输到PC机上的/home/crliu目录下。
(2)B - upload 从此处读取上传的文件(PC ---> 开发板)
PC机向开发板发送文件,需要发送的文件在/tmp目录下(PC机上的目录)。做了此项配置后,每次向开发板发送文件时,只需输入文件名即可,无需输入文件所在目录的绝对路径。
二、nfs配置
按这个主要是为了linux之间的文件共享,我们可以在电脑上的linux直接看读写嵌入式开发板里面linux 的文件
1 、安装NFS
Debian/Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
$ sudo apt-get install nfs-kernel-server
(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)
2 、配置/etc/exports
NFS挂载目录及权限由/etc/exports文件定义
将我的home目录中的/home/zp/share目录让192.168.2.*的IP共享, 则在该文件末尾添加下列语句:
/home/zp/share 192.168.2.*(rw,sync,no_root_squash)
或者:/home/zp/share 192.168.2.0/24(rw,sync,no_root_squash)
运行 $ sudo exportfs -r 更新
3 、运行 $ sudo /etc/init.d/nfs-kernel-server restart($ sudo nfs-kernel-server restart) 重启nfs服务
4 、测试NFS
可以尝试一下挂载本地磁盘(假设本地主机IP地址为:192.128.2.1,将/home/zp/share挂载到/mnt)
$ sudo mount -t nfs 192.168.2.1:/home/zp/share /mnt
运行 $ df 看看结果
$ sudo umount /mnt
可以使用一定的参数:
mount -o nolock,rsize=1024,wsize=1024,timeo=15 192.168.2.130:/tmp/ /tmp/
5 、客户端挂载远程共享
mount -t nfs 192.168.0.***:/home/***/share /mnt/share
三、ftp配置
ftp的软件有好多种:google一下:各种的一些大致特点:
wu-ftp:比较老牌,但针对它的攻击比较多,设置比较麻烦,但功能比较强大。
proftpd:能实现wu-ftp以及server-U的所有功能。安全性也较高,但比起vcftpd配置稍显复杂。
vsftpd:功能强大,配置也比较简单
ftp也可以:
选vsftod是因为它安全、速度快
选proftpd偶尔看到webmin支持他,所以就用了,因为方便。
选Serv-U理由windows普遍,Serv-U方便,但最大问题是盗版,所以现在不大用了
vsftpd是大多是linux系统下自带的ftp软件,而且像FREEBSD等网站都是采用,而且配置起来简单很多,所以我们也采用了vsftpd
安装:
sudo apt-get install vsftpd
配置:
备份一下源文件:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
然后修改
sudo vi /etc/vsftpd.conf
anonymous_enable=yes (允许匿名登陆)
dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
local_umask=022 (FTP上本地的文件权限,默认是077)
connect_form_port_20=yes (启用FTP数据端口的数据连接)
xferlog_enable=yes (激活上传和下传的日志)
xferlog_std_format=yes (使用
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的日志格式)
ftpd_banner=XXXXX (欢迎信息)
pam_service_name=vsftpd (验证方式)
listen=yes (独立的VSFTPD服务器)
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项
开启匿名FTP服务器上传权限
在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
开启匿名服务器下传的权限
Anon_world_readable_only=no
注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读-----下传 (W)写----上传 (X)执行----如果不开FTP的目录都进不去
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传
用户登陆限制进其它的目录,只能进它的主目录
设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可
限制本地用户访问FTP
Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)
注:开启userlist_enable=yes匿名帐号不能登陆
安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)
查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号
配置的时候注意文件权限的问题,开启匿名和本地后,关键是文件权限的设置,为了给不同的用户分配不同的权限,可以生成一个组,例如ftpuser,然后赋予它何时的权限例如755,chroot()设置可以使得本地用户限制在登录时的目录,这对于安全很重要,可以这是local_root指定本地用户登录时的目录,负责为/home下相应目录。
四、arm-linux-gcc/gdb等配置
这个网上有制作好的工具链arm-elf-gcc
或者直接用最原始的
1、解压arm-linux-gcc-4.3.2.tgz包
在目录/usr/local下建一文件夹arm;命令如下:sudo mkdir arm;然后把压缩包复制到该文件夹中,执行命令 sudo tar xzvf arm-linux-gcc-4.3.2.tgz解压。
(注意:usr/local 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。)
2、将编译器的路径加入环境变量
打开etc下的文件bash.bashrc;(命令:sudo gedit /etc/bash.bashrc),然后再最后加上export PATH=$PATH:/usr/local/arm/usr/local/arm/4.3.2/bin。如下图
(注意:本人解压后的文件夹下有几级目录(解压出来的文件夹目录是usr/local/arm/),所以此处的路径比较长,可以把后面的usr/local/arm/目录去掉。)
3、测试交叉编译器
1、输入命令 arm-linux-gcc -v执行即可查看交叉编译器的版本。
2、编译经典的Hello World!运行:
首先在X86上用gcc编译运行;效果如下
然后用arm-linux-gcc编译运行效果如下:
可见,用arm-linux-gcc编译的Hello world程序不能在X86上运行,而在arm开发板上却能正常运行。到此,交叉编译器安装成功。
另外还需要安装库的支持
安裝build-essential:
sudo apt-get install build-essential
安裝头文件和库:
sudo apt-get install libc6-dev
安装gdb 调试器:
sudo apt-get install gdb
安装安装图形界面调试器 ddd:
sudo apt-get install ddd
sudo apt-get install insight
(这些是为了将来写驱动和应用程序准备的)
五、automake,automake autoconf autogen工具
这个工具可以协助我们生成makefile
当然我们也可以自己手动编写
sudo apt-get install automake
sudo apt-get install autoconf
sudo apt-get install autogen
ubuntu 步步为营之c/c++开发环境建立
关于nfs,tft,samba,makefile等配置可以参考步步为营的其他篇章已经有详细叙述
IDE开发环境我们可以选择
emace或eclipse等
这里刚开始用最原始的gcc gdb
1、配置GCC
刚装好的系统中已经有GCC了,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。
可以在新立得里面搜索build-essential或输入下面命令:
代码:
sudo apt-get install build-essential
安装完成后写一个C语言程序testc.c测试一下。
代码:
#include
int main()
{
printf("Hello Ubuntu!\n");
return 0;
}
代码:
$ gcc testc.c -o testc
$ ./testc
显示
Hello Ubuntu!
这样,C语言编译器就安装成功了;
图1
2安装GTK环境
安装GTK环境只要安装一个gnome-core-devel就可以了,里面集成了很多其他的包。除此之外还要转一些其他的东西,如libglib2.0-doc、libgtk2.0-doc帮助文档,devhelp帮助文档查看,glade-gnome、glade-common、glade-doc图形界面
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
等。
代码:
sudo apt-get install gnome-core-devel
sudo apt-get install libglib2.0-doc libgtk2.0-doc
sudo apt-get install devhelp
sudo apt-get install glade-gnome glade-common glade-doc
安装完成后我们也同样做个测试程序
代码:
#include
void hello(GtkWidget *widget,gpointer data)
{
g_print("Hello Ubuntu!\n");
}
gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
g_print ("delete event occurred\n");
return(TRUE);
}
void destroy(GtkWidget *widget,gpointer data)
{
gtk_main_quit();
}
int main( int argc, char *argv[] )
{
GtkWidget *window;
GtkWidget *button;
gtk_init (&argc, &argv);
window=gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
button = gtk_button_new_with_label ("Hello Ubuntu!");
gtk_signal_connect (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (hello), NULL);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (gtk_widget_destroy),GTK_OBJECT (window));
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window); /*显示一个窗口*/
gtk_main(); /*进入主循环*/
return(0);
}
用下面命令编译运行
代码:
$ gcc gtkhello.c -o gtktest `pkg-config --cflags --libs gtk+-2.0`
$ ./gtktest
会显示一个带有一个按钮的窗口,点击按钮以后窗口关闭,命令行显示Hello Ubuntu!
当然这只是个初步
gcc gdb的参数还是有很多的
这些都需要慢慢去消化去理解
makefile的编写也是一件很重要的事情
可以参考
http://wenku.baidu.com/view/79262a00bed5b9f3f90f1c39.html
ubuntu 步步为营之C编程初步
关于使用什么IDE工具可参考http://www.cnblogs.com/dhmy/archive/2009/11/02/1594845.html
c 编程中相关文件后缀
.a
静态库 (archive)
.c
C源代码(需要编译预处理)
.h
C源代码头文件
.i
C源代码(不需编译预处理)
.o
对象文件
.s
汇编语言代码
.so
动态库
单个源文件生成可执行程序
下面是一个简单的“hello, ubuntu”程序的源代码:
/* helloubuntu.c */ #include int main(int argc,char *argv[]) { printf(“hello, ubuntu\n”); return 0; }
最简单直接的编译该代码为可执行程序的方法是,将该代码保存为文件 helloubuntu.c,并执行以下命令:
$ gcc -Wall helloubuntu.c
编译器通过检查命令行中指定的文件的后缀名可识别其为 C 源代码文件。GCC 默认的动作:编译源代码文件生成对象文件(object file),链接对象文件得到可执行程序,删除对象文件。由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out。在命令行中输入程序名可使其执行并显示结果:
$ ./a.out hello, ubuntu
选项 -o 用来指定所生成的可执行程序的文件名。下面的命令生成名为 helloubuntu 的可执行程序:
$ gcc -Wall helloubuntu.c -o helloubuntu
在命令行中输入程序名将使其执行,如下:
$ ./helloubuntu hello, ubuntu
源文件生成对象文件
选项 -c 指示 GCC 编译源代码文件,但将对象文件保留在磁盘中并跳过链接对象文件生成可执行文件这一步。在这种情况下,默认的输出文件的文件名同源代码文件名一致,只不过后缀换为 .o 。例如:下面的命令将生成名为 helloubuntu.o 的对象文件:T
$ gcc -c -Wall helloubuntu.c
选项 -o 可用来指定生成的对象文件的文件名。以下命令将产生名为kubuntu.o的对象文件:
$ gcc -c -Wall helloubuntu.c -o kubuntu.o
当构建对象库或者生成一系列对象文件以备稍后链接用时,一条命令即可从多个源码文件生成对应的对象文件。下面的命令将生成对象文件ubuntu.o, kubuntu.o 与 xubuntu.o:
$ gcc -c -Wall ubuntu.c kubuntu.c xubuntu.c
多个源文件生成可执行程序
即使多个源码文件被编译,GCC编译器也会自动进行链接操作。例如:下面的代码保存在名为 hellomain.c 的文件中并调用一个名为 sayhello()的函数:
/* hellomain.c */ void sayhello(void); int main(int argc,char *argv[]) { sayhello(); return 0; }
以下代码保存在名为 sayhello.c 的文件中并定义了 sayhello() 函数:
/* sayhello.c */ #include void sayhello() { printf(“hello, ubuntu\n”); }
下面的命令将两个文件分别编译为对象文件且将其链接为可执行程序 hello,并删除对象文件:
$ gcc -Wall hellomain.c sayhello.c -o hello
编译预处理
选项 -E 指示编译器只进行编译预处理。下面的命令将预处理源码文件 helloubuntu.c 并将结果在标准输出中列出:
$ gcc -E helloubuntu.c
选项 -o 用来将预处理过的代码定向到一个文件。像本文一开始给出的后缀列表所给出的,不需经过预处理的C源码文件保存为后缀为 .i的文件中,这种文件可以这样来获得:
$ gcc -E helloubuntu.c -o helloubuntu.i
生成汇编代码
选项 -S 指示编译器生成汇编语言代码然后结束。下面的命令将由 C 源码文件 helloubuntu.c 生成汇编语言文件 helloubuntu.s:
$ gcc -S helloubuntu.c
汇编语言的形式依赖于编译器的目标平台。如果多个源码文件被编译,每个文件将分别产生对应的汇编代码模块。
创建静态库
静态库是编译器生成的普通的 .o 文件的集合。链接一个程序时用库中的对象文件还是目录中的对象文件都是一样的。静态库的另一个名字叫归档文件(archive),管理这种归档文件的工具叫 ar 。
要构建一个库,首先要编译出库中需要的对象模块。例如,下面的两个源码文件为 hellofirst.c 和 hellosecond.c:
/* hellofirst.c */ #include void hellofirst() { printf(“The first hello\n”); } /* hellosecond.c */ #include void hellosecond() { printf(“The second hello\n”); }
这两个源码文件可以用以下命令编译成对象文件:
$ gcc -c -Wall hellofirst.c hellosecond.c
程序 ar 配合参数 -r 可以创建一个新库并将对象文件插入。如果库不存在的话,参数 -r 将创建一个新的,并将对象模块添加(如有必要,通过替换)到归档文件中。下面的命令将创建一个包含本例中两个对象模块的名为 libhello.a 的静态库:
$ ar -r libhello.a hellofirst.o hellosecond.o
现在库已经构建完成可以使用了。下面的程序 twohellos.c 将调用该库中的这两个函数:
/* twohellos.c */ void hellofirst(void); void hellosecond(void); int main(int argc,char *argv[]) { hellofirst(); hellosecond(); return 0; }
程序 twohellos 可以通过在命令行中指定库用一条命令来编译和链接,命令如下:
$ gcc -Wall twohellos.c libhello.a -o twohellos
静态库的命名惯例是名字以三个字母 lib 开头并以后缀 .a 结束。所有的系统库都采用这种命名惯例,并且它允许通过 -l(ell) 选项来简写命令行中的库名。下面的命令与先前命令的区别仅在于 gcc 期望的找寻该库的位置不同:
$ gcc -Wall twohellos.c -lhello -o twohellos
指定完整的路径名可使编译器在给定的目录中寻找库。库名可以指定为绝对路径(比如 /usr/worklibs/libhello.a)或者相对与当前目录的路径(比如 ./lib/libhello.a)。选项 -l 不能具有指定路径的能力,但是它要求编译器在系统库目录下找寻该库。
创建共享库
共享库是编译器以一种特殊的方式生成的对象文件的集合。对象文件模块中所有地址(变量引用或函数调用)都是相对而不是绝对的,这使得共享模块可以在程序的运行过程中被动态地调用和执行。
要构建一个共享库,首先要编译出库中需要的对象模块。例如:下面是文件名为 shellofirst.c 和 shellosecond.c 的两个源码文件:
/* shellofirst.c */ #include void shellofirst() { printf(“The first hello from a shared library\n”); } /* shellosecond.c */
要将以上两个源码文件编译成对象文件,可以用下面的命令:
$ gcc -c -Wall -fpic shellofirst.c shellosecond.c
选项 -c 告诉编译器只生成 .o 的对象文件。选项 -fpic 使生成的对象模块采用浮动的(可重定位的)地址。缩微词 pic 代表“位置无关代码”(position independent code)。
下面的 gcc 命令将对象文件构建成一个名为 hello.so 的共享库:
$ gcc -Wall -shared shellofirst.o shellosecond.o -o hello.so
选项 -o 用来为输出文件命名,而文件后缀名 .so 告诉编译器将对象文件链接成一个共享库。通常情况下,链接器定位并使用 main() 函数作为程序的入口,但是本例中输出模块中没有这种入口点,为抑制错误选项 -shared 是必须的。
编译器能将后缀为 .c 的文件识别为 C 语言源代码文件,并知道如何将其编译成为对象文件。基于这一点,先前的两条命令我们可以合并为一条;下面的命令直接将模块编译并存储为共享库:
$ gcc -Wall -fpic -shared shellofirst.c shellosecond.c -o hello.so
下面的程序,存储在文件 stwohellos.c 内,是调用共享库中两个函数的主程序:
/* stwohellos.c */ void shellofirst(void); void shellosecond(void); int main(int argc,char *argv[]) { shellofirst(); shellosecond(); return 0; }
该程序可以用下面的命令编译并链接共享库:
$ gcc -Wall stwohellos.c hello.so -o stwohellos
程序 stwohello 已经完成,但要运行它必须让其能定位到共享库 hello.so,因为库中的函数要在程序运行时被加载。
超越命名惯例
如果环境要求你使用 .c 以外的后缀名来命名你的 C 源码文件,你可以通过 -x 选项来指定其对应的语言以忽略我们的命名
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
。例如,下面的命令将从文件 helloworrld.jxj 编译 C 语言源代码并生成可执行文件 helloubuntu:
$ gcc -xc helloubuntu.jxj -o helloubuntu
通常,在没有 -x 选项的情况下,任何具有未知后缀名的源码文件名都被认为是连接器可以识别的选项,并在不做任何更改的情况下传递给链接器。选项 -x 对其后的所有未知后缀的文件都起作用。例如,下面的命令使 gcc 将 align.zzz 和 types.xxx 都作为 C 源码文件来处理:
$ gcc -c -xc align.zzz types.xxx
ubuntu php开发工具
这些工具在ubuntu的软件中心都可以直接找到点击安装的
以下仅作参考
一、JED Editor 下载网址(http://www.jedsoft.org/jed/) 一个命令提示符的PHP编辑器
下载jed-0.99-16.tar.gz文件
# tar zxvf jed-0.99-16.tar.gz
# cd jed-0.99-16
# ./configure --prefix=/usr/local/jed
# make
# make install
# cd /usr/local/jed/bin
# cp jed /usr/bin 让根目录里就可以执行jed文件
使用时,按Alt+键名来操作菜单
二、Gphpedit 下载网址(http://www.gphpedit.org/) 一个是界面的IDE
下载:
gphpedit-0.9.10-1.i386.rpm
GtkScintilla2-0.1.0-aj.i386.rpm
因为这个gphpedit是gtk来编的,所以要先装GtkScintilla2-0.1.0-aj.i386.rpm这个包
# rpm -ivh GtkScintilla2-0.1.0-aj.i386.rpm
# rpm -ivh gphpedit-0.9.10-1.i386.rpm
打入以下命令就可以运行gphpedit
# gphpedit
安装gtkhtml2-2.2.0-5.i386.rpm 用来编辑html
三、bluefish 下载网址(http://bluefish.openoffice.nl/) 是一个很不错的界面IDE
下载 b