Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8608315
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类:

2007-04-06 15:00:31

[点评:通过这篇文章主要了解除了wxWidgets做的程序之外,别的程序怎么在linux制作安装包。]
在Linux系统,你可以选用图形界面的安装程序,定制的shell脚本或者某个特定发行版的软件包,比如RPM格式(基于Red Hat发行版)和Debian发布包(基于Debian发行版),你甚至可以直接将所有需要的文件压缩成一个包含路径的压缩文件(.tar.gz或者. tar,bz2),安装的时候只需要保持路径解压这个文件就可以了.

Linux环境下的图形界面安装程序包括Loki Setup(免费),Zero G公司的InstallAnywhere和InstallShield等.

基于GTK+的wxWidgets图形界面应用程序是桌面不可感知的:它不依赖于GNOME或者KDE,因此无论在哪种桌面环境下它都可 以运行.大多数KDE桌面的发行版都会包括GTK+的库文件.然而,因为它们使用不同的桌面风格,GTK+程序在KDE桌面上看上去可能会有些不适应,某 些控件可能超出边界,这种情况下你可以建议你的用户安装一个KDE下的GTK风格的皮肤,比如GTK-Qt(不过,在你把它介绍给你的用户之前,最好自己 先测试一下).

你可能会希望在桌面上安装一个图标,以便你的用户可以直接使用它来启动你的程序.要在KDE桌面环境中增加一个图标,你需要拷贝一个合 适的APP.desktop文件到PREFIX/share/applications文件夹,其中APP代表你的应用程序,PREFIX则通常代表 /usr,/usr/local或者其它定义在KDEDIR环境变量中的路径.下面演示了一个叫做Acme的Desktop文件,其中架设Acme被安装 在/opt/Acme中.

 
[Desktop Entry]
BinaryPattern=Acme;
MimeType=
Name=Acme
Exec=/opt/Acme/acme
Icon=/opt/Acme/acme32x32.png
Type=Application
Terminal=0


而要在GNOME桌面上增加一个图标,语法和KDE中相似不过放置的位置应该是~/.gnome-desktop(只对单个用户有效). 更多关于GNOME和KDE桌面文件的定义可以在下面的网址看到:http: //

如何制作RPM包的信息可以在找到,那里还包含一个免费的在线电子书.而创建Debian包的信 息可以在找到.这俩中方法创建的安装包可以允许系统进行依赖性检查,也使得用户可以很容易的浏览软件包的内容 和安装软件包.如果需要创建RPM,.deb或者其它格式发行包的软件,可以试一下EPM.

关于使用shell脚本创建Linux的安装文件的方法,随书光盘的examples/chap20/install目录中包含了一个 用来安装Acme的示例文件installacme.这个脚本作的事情包括安装整个程序并且创建一个叫做acme脚本,这个脚本在运行实际的可执行文件之 前会先设置当前位置环境变量.这样作的好处在于你既不需要将软件所在的目录的路径增加到PATH环境变量中,也不需要将可执行文件直接拷贝到系统路径下就 可以执行.所有的数据文件保持在可执行文件所在的目录中.这使得卸载软件变得容易.你当然也可以选择让安装脚本将数据放置到Linux的标准数据目录中.

在examples/chap20/install目录中还包含一个脚本叫做maketarball.sh,它演示了怎样创建一个用户发行的tar格式的 压缩包,installacme脚本将包含在这个压缩包内以及另外一个包含所有数据文件的压缩包.你可以修改maketarball.sh以满足你自己的 需要.

Linux环境上的动态链接库的问题

因为Linux系统上并没有标准的GUI库,各个发行版按照自己的喜好来添加它喜欢的库和程序,因此你可能会发现在某些系统上,你的应用 程序不能运行,提示的原因是无法找到动态链接库.因此,静态链接所有需要的库文件实在是一个很诱人的想法.但是这样又会导致别的一些问题.虽然你不应该静 态链接GTK+的那些库文件,但是静态链接wxWidgets的库是可行的,你可以在运行configure脚本的时候选择开关--disable- shared以达到这个目的.你也可以考虑将wxWdigets提供的那些动态链接库以及所需要的GTK+相关的库和你的应用程序打包在一起发布.

另外就是不要在太老的linux发行版(太老的那些动态链接库在新版上已经不提供了)或者太新的Linux发行版(需要一些老的发行版 上还没有的库)上编译你的软件.同时考虑在给你的链接器增加-lsupc++ 选项,以便你的程序可以静态链接一些基本的C++的库,而不是需要完全的依赖动态链接库,这样作可能会解决一些潜在的问题(不过,请注意静态链接GPL库 时候的版权问题).

最后,如果你想要针对各个发行版发布不同的软件包,如果你不想老是重新启动电脑以切换到不同的Linux,你可以考虑使用一个工具比如伟大的VMware,它可以让你同时在你的机器上运行多个linux的发行版.
阅读(4351) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~