




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在Linux下建立软体套件作者:佚名阅读人次:853文章来源:未知发布时间:2005-11-3网友评论(3)条这是份广泛指引文件,可用来建立一般性 UNIX 软体发行套件在 Linux 下. 1. 简介 很多软体套件提供给各式 UNIX, 包括 Linux, 是将原始码档案压缩成档 案(archives)而发行的. 相同的套件可以建立以便在不同对象的机器上执行, 并 且这可节省些软体成品而免於必须制造各种发行版本. 软体套件的单一发行版本 结果能执行在各式实体(incarnations), 像是在 Intel 机器, DEC Alpha, RISC 工作站, 甚至是电算主机. 但不幸的是, 这将建立软体的工作推给了最终使用 者(end user), 实际上是系统管理者, 即坐在键盘前的同志.你. 虽然这样, 认真来说这过程并不是像它看起来那麽可怕或不可思议, 就像这指引所解说一 样. 2. 从取得开始 你有下载或其它方式取得一个软体套件. 最常见情况是它被打包起来 (tarred) 而且被压缩 (gzipped), 成为 .tar.gz 或 .tgz 形式. 首先将它复制到一工作目 录. 然後用 untar 和 gunzip 处理它. 处理它最适合的命令是 tar xzvf filename, 这的 filename 当然是软体档名. 这种解开程序常常会安装适当档 案在它所开启的子目录中. 注意的是如果套件名称有 .Z 结尾, 那将要使用 uncompress PACKAGENAME, 然後再用 tar xvf PACKAGENAME 而不要用之前的步 骤. 有时打包起来的档案必须 untarred 且安装自使用者的家目录(home directory), 或者也许是在某个其它目录, 像是套件设定资料所指定的. 假若你 设法要 untar 它而得到的是错误讯息, 也许就是那原因. 读一下套件文件, 特别 是 README 和/或 Install 档案, 如果存在, 编辑设定档案和/或 Makefiles 如 所需要的, 即与安装指示符合. 注意的是通常 不 去更改 Imake 档案, 因为这可 能有未预期的结果. 某些软体套件允许自动安装程序,它是藉由执行 make install 来放置二元码在适当系统位置. 偶而, 你可能需要使用 patch档案,该档案有列出原本的与新的原始档案的差异, 来升级或加入臭(bug)的修正至未打包(unarchived)的原始档案. doc档案与/或 README 档案会告知你这算不算该情况. 对於使用 Larry Wall 的强力 修 补(patch) 工具之正常的语法(syntax)是 patch libX11.so.3.1.0. 大概软体也需要这个形式连结 libX11.so - libX11.so.3.1.0. 当然, 要将这断掉(missing)的连结建 好, 要以 root 身分使用这指令 ln -s libX11.so.3.1.0 libX11.so. * 某些套件会要求你去安装一个或以上的升级版本. 举例而言, StarDivision GmbH 的 StarOffice 组件(suite)是恶名昭彰(notorious)的要求 libc version 5.4.4 或更新. 以 root身分, 你需要复制一个或以上的函式 库(libraries)至合适的目录, 删去旧的函式库(libraries),然後重设符号连 结. 小心: 在这要格外注意, 因为如果你弄糟, 你可能会付出你的系统不能 运作的代价. 你通常可以找到升级的函式库(libraries)在 5Sunsite. 在Linux下建立软体套件作者:佚名阅读人次:854文章来源:未知发布时间:2005-11-3网友评论(3)条4.2 其它问题 * 在安装好的 Perl 或 shell script 给你一个 No such file or directory 错误讯息. 在这情况,检查档案权限来确定档案可执行 以及检查档案标头是 否含有使用 shell 或程式, 指明 script 所在地方. 举例而言, script 开 始如: #!/usr/local/bin/perl 如果 Perl 实际装在你的 /usr/bin 目录, 而不是 /usr/local/bin 目录, 那麽 script 无法执行. 有两个方法来修改. script 档案标头改成 #!/usr/bin/perl, 或用符号连结至正确的目录, ln -s /usr/bin/perl /usr/local/bin/perl. * 某些 X11 软体要求有 Motif 函式库(libraries)才能建立. 而标准的 Linux 发行套件并没有安装 Motif libraries, 而且目前 Motif 还要额外 $100-$200 的花费 (虽然免费软体 6Lesstif 在某些场合也能够用). 如果 你需要 Motif 来建立某一套件, 但缺少 Motif libraries, 那麽也许可以取 得 静态连结的二元码(statically linked binaries). 静态连结在二元码本 身纳入函式库行程(library routines). 这造成二元码档案大了许多, 但是 码可在缺少该函式库的系统上执行. * 执行 configure script 会创造奇怪的 Makefile, 那像是与你所要设法建立 的套件亳不相干. 这表示跑著错误的 configure, 其找到你的 path 上某处 其他的 configure. 所以要下 configure 指令 应该要下成 ./configure 即 目前目录下的. * 某些程式会要求有 setuid root, 为了要以有 root 权力 来执行. 要达成这 目录的指令是 以root 下指令 chmod u+s filename. (注意的是这程式已经 是 root 所拥有了). 这在设定档案权限中的 setuid bit 很有用. 这样用在 当程式在存取系统硬体,像是 modem 或 CD ROM drive, 或当 SVGA libs 被 使在於主控台模式(console mode), 像是在一个特别恶名昭彰 的(notorious)模拟器(emulation)套件. 如果程式正被 root 执行, 但给一 般使用者一个 access denied 的错误讯息, 想像就是这样造成的. 警告: 一个有 setuid 成 root 的程式可能提出对你的系统有安全上的风 险. 这个程式可以 root 权力来跑而所以有某些破害的潜在性. 在设定 setuid bit 前, 确定你知道该程式在做什麽, 必要时看一下原始码. 4.3 旋扭与微调 你可能希望检查 Makefile 来确定有选用对你系统最佳编译选项. 举例来说, 设 定 -O2 旗标来选最高层级的最佳化而 -fomit-frame-pointer 旗标来造最小二元 码 (虽然 debugging 会没有打开). 除非你知道你在做什麽, 而且在任何情况 下, 除非艰苦建立的工作已完成, 否则不要玩这些. 4.4 去哪取得进一步的协助 在我的经验, 大概25%的应用程式建立完全没有困难. 另外大约50%能被说服 的建立, 要付出努力的围从无聊到极为困难. 那仍然表示有某些套件无论如何 都无法建立. 即使那样, 那些 Intel ELF 和/或 a.out 二元码, 也可能在 7Sunsite, 8TSX-11 archive 或其它地方找到. 也许, 软体的创造者可以提 供编译好的二元码给你的特别的机器使用. 注意的是如果你取得预先编译好的二元码, 你会需要检查是否与你的系统相容: * 这二元码必须在你的 硬体上跑 (i.e., Intel x86). * 这二元码必须与你的核心(kernel)相容 (i.e., a.out 或 ELF). * 你的函式库(libraries)必须是最新的. 如果全都失败, 你可以在合适的 新闻群组寻求帮忙, 像是在 9comp.os.linux.x 或 10comp.os.linux.development. 万一你只是不够幸运 的话, 嘿, 试试也是有趣的. 5. 最後步骤 读一下软体套件的文件来决定是否有某些环境变数需要设 (在 .bashrc 或 .cshrc) 以及 是否 .Xdefaults 和 .Xresources 档案需要调整. 可能有个应用程式内定的档案, 通常叫做 Xfoo.ad 在原本的 Xfoo 发行套件. 如 果这样, 编辑 Xfoo.ad 档案适合你的机器, 然後重新命名 (mv) 成 Xfoo 而且 以 root 身分 安装它到 /usr/lib/X11/app-defaults 目录, 没这样做可能会造 成软体行为很奇怪, 甚至拒绝执行. 大多数的软体套件附有一个或以上的格式化 man pages. 以 root 身分, 复制 Xfoo.man 档案到合适的 /usr/man 目录 (man1 - man9), 而根据那再重新命名. 举例而言, 如果 Xfoo.man 结果是在 /usr/man/man4, 那应该命名为 Xfoo.4 (mv Xfoo.man Xfoo.4). 根据一般约定使用者的命令摆在 man1, 游戏是在 man6, 而管理的套件是在 man8 (看一下 man 文件 以取得更详细资料).当然,在 你系统你可以不照这个约定, 只要你喜欢. 某些套件不会安装二元码(binaries)在合适的系统目录, 换句话说, 他们没有 install 选项在 Makefile 中. 如果是这情况, 你可以用 root 身分复制二元 码(binaries)到 usr/local/bin 目录来手动安装二元码(binaries). 注意的是某些或全部上述步骤,在大部分情形下,应该会由 make install 来自动 操作. 如果是这样, README 或 INSTALL 文件档会提到这个. 6. 第一个例子: Xscrabble Matt Chapman的 Xscrabble 似乎像是个颇有趣的程式, 因为我曾是个贪婪的 Scrabble(TM)(拼字游戏)玩家.我下载下,解压, 而且建立它以 README 档案中的 下列步骤: xmkmf make Makefiles make includes make 当然它不能正常运作. _ gcc -o xscrab -O2 -O -L/usr/X11R6/lib init.o xinit.o misc.o moves.o cmove.o main.o xutils.o mess.o popup.o widgets.o display.o user.o CircPerc.o -lXaw -lXmu -lXExExt -lXext -lX11 -lXt -lSM -lICE -lXExExt -lXext -lX11 -lXpm -L./Xc -lXc BarGraf.o(.text+0xe7): undefined reference to XtAddConverter BarGraf.o(.text+0x29a): undefined reference to XSetClipMask BarGraf.o(.text+0x2ff): undefined reference to XSetClipRectangles BarGraf.o(.text+0x375): undefined reference to XDrawString BarGraf.o(.text+0x3e7): undefined reference to XDrawLine etc. etc. etc. _ 我在 11comp.os.linux.x 的新闻群组询问过, 而且有些人好心的指出似乎 Xt, Xaw, Xmu, 和 X11 libs 没有让连结器(linker)找得到. 嗯. 有两个主要的 Makefiles, 而且在 src 目录下的那个让我感兴趣. 在 Makefile 一行有定义 LOCAL_LIBS 成: LOCAL_LIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) 这所指的 libs 并没有被连结器找到. 找找下个指到 LOCAL_LIBS 的地方, 我看到该在 Makerfile 的495行: $(CCLINK) -o $ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBS) $(LDLIBS) $(EXTRA_LOAD_FLAGS) 而现在 LDLIBS 是什麽呢? LDLIBS = $(LDPOSTLIB) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) SYS_LIBRARIES 是: SYS_LIBRARIES = -lXpm -L./Xc -lXc 是个! 就是这样遗失 libraries. 大概连结器需要在 LOCAL_LIBS 之前看到 LDLIBS. 所以, 第一件事要尝试去修 改 Makefile 就是改写在495行的 $(LOCAL_LIBS) 和 $(LDLIBS) , 所以它现在变 成: $(CCLINK) -o $ $(LDOPTIONS) $(OBJS) $(LDLIBS) $(LOCAL_LIBS) $(EXTRA_LOAD_FLAGS) 在上面的改後,我试著再次执行 make , 瞧, 它这次可正常跑了. 当然, Xscrabble 仍然需要一些微调(fine tuning与玩弄(twiddling), 像是重新命名 字典以及标注某些辅助的叙述在原始码档案之一, 但正因为那样,它已给我好几个 小时的消遣. 你可以寄 e-mail 12Matt Chapman, 而且从他的 13home page 下载 Xscrabble. _ Scrabble 是 Milton Br
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖北恩施州巴东县农业农村局公益性岗位招聘1人模拟试卷及答案详解1套
- 2025广东阳江阳西县政府发展研究中心就业见习岗位1人模拟试卷及答案详解(新)
- 2025第十三届贵州人才博览会贵阳贵安事业单位引进高层次及急需紧缺人才770人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025贵州黔西南州望谟县消防救援大队招聘政府专职消防文员1人模拟试卷及答案详解(网校专用)
- 2025广西来宾宾信投资集团有限公司招聘拟聘人员考前自测高频考点模拟试题及参考答案详解1套
- 2025年春季中国石油哈尔滨石化公司高校毕业生招聘模拟试卷及答案详解(典优)
- 2025年春季黑龙江大庆油田有限责任公司高校毕业生招聘50人考前自测高频考点模拟试题有答案详解
- 2025年威海职业学院公开招聘高层次人才(40人)考前自测高频考点模拟试题及答案详解(夺冠)
- 2025年上半年浙江永康市产业投资集团有限公司公开招聘合同制员工15人笔试题库历年考点版附带答案详解
- 2025广东深圳市优才人力资源有限公司招聘聘员(派遣至深圳市龙岗区审计局)1人考前自测高频考点模拟试题有答案详解
- 22G101三维彩色立体图集
- 人教版小学英语单词表(完整版)
- 自家停车位申请按照充电桩四方协议书
- 生产组织供应能力说明
- 足金点钻工艺培训
- JJG 162-2019饮用冷水水表
- 山西省煤矿安全生产管理人员培训考试题库(浓缩500题)
- 空调负荷计算-空调负荷的计算(空调工程)
- 计算机视觉之图像分类课件
- 输电线路工程安全风险识别、评估、预控措施
- 大学英语三级词汇表(新版)
评论
0/150
提交评论