看板FreeBSD
标 题Re: [问题] make有办法显示错误的地方吗?
发信站SayYA 资讯站 (Wed Apr 25 18:59:09 2007)
转信站ptt!ctu-reader!news.nctu!SayYa
※ 引述《[email protected]》之铭言:
> ※ 引述《[email protected] (苏打)》之铭言:
> > 我抓了一个网路上的程式
> > 里面有Makefile
> > 我依照说明下指令make all
> > 但FreeBSD却显示
> > "make: don't know how to make ../obj/misc/(档案). Stop"
> > 我拿同一个程式,在Windows XP环境搭配MinGw32却可以成功compile
> 之前遇到的情况是 Makefile里面每一行的结尾是 ^M
> 所以make不起来
所以罗,若有 port 内有该软体,就建议直接用 port 方式安装,
因为有其他会装的人帮你都弄好了
或者你知道怎麽装之後,可以参考 FreeBSD Porter's Handbook 去 send-pr
来当 port maintainer。
其实,要自己手动装也是可以,
通常若 ^M 结尾,大概原本档案是在 win 环境内写的,
有蛮多方式都可以去掉,vi/vim 有取代方式,其他编辑软体也有类似功能,
或直接在 shell 内执行简单指令也可以做到,像是:
tr -d \\r < Makefile > Makefile.unix
mv Makefile.unix Makefile
有空的话,可以装一下 games distribution
并看看 /usr/share/games/fortune/freebsd-tips
基本上一些 UNIX tips/ BSD tips 在里面都有教哦~~
至於要怎麽判断 Makefile 是要用 BSD make(pmake) 或是 GNU make(gmake)的话,
可以看一下 Makefile 写法 (注1)
或者是以 autotools 方式的 Makefile.in, Makefile.am 则可以先 ./configure
再去갠grep AUTOMAKE_OPTIONS Makefile 是不是有下面这样的字眼,有就是用 gmake
AUTOMAKE_OPTIONS = gnu
==
注1: 以下是以前写的文章...里面附注的书籍可以参考看看... :p
》〈[HOWTO] 如何改 FireBird BBS source?〉 Version: 0.32 beta
》Written by Amsterdam <
[email protected]>
》License: GNU FDL Version 1.1, March 2000
》※ 本文章若有错误,请不吝指教。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
「安装是一回事,最需花心力照顾的还是後续的维护。」
By chw(aka woju) <
[email protected]>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
──────────────────────────────────────
(壹) 修改 source 前的准备功夫:
──────────────────────────────────────
首先,必须先确定你有基本 C programming 的能力, code 写得丑,或者用得不好
都暂时没关系,可以日後逐渐改进,最重要的是我们需要稳定。
不过在修改之前,我们先花点时间了解一下整个 source tree 的重要架构。
以下就简介 FireBird 3.1-20010830-SNAP 版,目前一些重要的东西存放处:
bbssrc/ChangeLog 这里记载着每个版次的重大变迁过程纪录。
bbssrc/doc 存放 Firebird BBS 相关文件,
请详细阅读各文件再安装系统。*强力推荐*
(内容包括: 如何架站、FAQ、设定范例档)
bin/ 大部分的 BBS 相关执行档(binary)
及一些 shell script。
etc/ BBS 的一些设定档。
bbssrc/ BBS 的 source tree
bbssrc/include/ BBS 的 header files
bbssrc/src/ BBS 的主体 source
bbssrc/util/innbbsd/ 提供 BBS 转信用的程式
(innbbsd + NoCeM_innbbsd patch)
bbssrc/util/local_utl/ BBS 主要工具程式的 source
bbssrc/util/ BBS 其它的工具包
此外,也可以用 du 来鸟瞰全部的 source tree
──────────────────────────────────────
(贰) 资料的备份与还原
──────────────────────────────────────
备份
还原前应注意事项
如何解开压缩档
──────────────────────────────────────
(参) 开始修改 source code :《这时请都以 bbs 身份进行各项动作,除非特殊情况》
──────────────────────────────────────
改 source 大致分为三部份,第一部份通常是开站之初的使用者画面,
第二部份是为了修改部份系统功能的 bugs 或进阶功能,第三部份为新增
BBS 原来所没有的功能。
第一部份严格说起来并不算是改 source,只要会用 Editor(注1) 跟 gcc(注2),
任何人都会。 通常为了改特定字串(假如要找 SimCity3000 这个关键字眼),
我们可以运用 grep -iR "SimCity3000" * 来找到要改的字串(注3)。
第二部份就稍微要有一些经验和对 BBS 系统的了解,包括 function 间
的 dependence 关系、BBS struct .... 等。 通常要改一个 function 的话,
可以到 ~/bbssrc/src 下找档名与之相对应 .c 档来着手。
如果您不确定要改的是哪个档,在此假设您要改的地方会出现「香蕉芭乐」,
那麽可以在 ~bbs/bbssrc 用 grep -lR '香蕉芭乐' *
来找到要改的「香蕉芭乐」在哪个档案。
第三部份就需要更多的时间与精力去读 BBS source code、struct 及 debug,
甚至要对 UNIX System 有一些背景才能胜任。
还有很重要的一点是,请善用手边的「人力资源」(注4),对於不熟悉的指令、程式、
function,我们几乎都可自行用 man BLAH("BLAH"可以是指令、程式、function、...)
来查询其用法和说明,「运用法门,存乎一心」。
──────────────────────────────────────
(肆) 改 source code 後,该做什麽?《这时请改以 root 身份在 ~bbs/bbssrc 下来做》
──────────────────────────────────────
在你将完成 source code 的更改步骤之後,
尤其是有改过 *.h (header file)的话,建议使用 make clean update 来进行编译,
在山水兰阳(注5)上,这大约要花半分钟左右的时间(注6)。
make 完之後,请务必记得重跑 bbsd ,必要时请清一清 SHM 里头的屍体(注7),
这时就可以重新 login BBS 进去测试看看啦。
Good Luck!:)
──────────────────────────────────────
(伍) Debug 篇
──────────────────────────────────────
「我们不是神,不能从你的只字片语中帮你解决问题..
如果你想要我们帮忙些什麽的话,请送上 error log」
By Vanilla I. Shu <
[email protected]>
──────────────────────────────────────
(陆) 後记
──────────────────────────────────────
any idea? mailto:
[email protected]
──────────────────────────────────────
(柒) 参考资料
──────────────────────────────────────
[1] Andrew Oram & Steve Talbott 着,李果益 译,蒋大伟校编《make 专案开发工具
(Managing Projects with make)》,2000年10月初版,O'REILLY出版。
[2] Mike Loukides & Andy Oram 着,吕维毅 编译《GNU 程式设计(Progamming with
GUN Software)》,1999年9月再版,O'REILLY出版。
[3] Paul Vixie <
[email protected]>, CRONTAB(1), FreeBSD 4.4 manual page
[4] Satoshi Asami and the Awesome Ports Team (originated by David O'Brien),
PORTS(7), FreeBSD 4.4 manual page
[5] Steve Oualline 原着,吕维毅 译《C++风格与艺术(Practical C++ Programming)
》
,2000年6月三刷,O'REILLY出版。
─────
1)Editor: 就是"编辑器"啦,像是 UNIX 环境下的 joe/vi/pico 等都可以,当然也可以
在 win 环境下用像是 UltraEdit 改好再以 FTP or WinCVS 回传给 Server。
2)gcc: GNU project C and C++ Compiler(GNU C/C++编译器)
3)grep: 是很好用的工具,专门可以帮您找出您要的东西,
并列出档名或档案中内含文字。
有的时候您会想知道,哪些档案内容有您欲寻找的字串,像想要修改输入(Input)
输出(Output)介面时,就需要使用 grep 指令
4)man: 就是 Manual 的简称啦,顺便介绍一下 man 环境下的基本操作:
◎ Space键,卷到下一页 ◎ ↑↓键,这...不用多说了吧?^_^;;
◎ q键,可随时离开(quit)。
此外,您的瞳孔中要是出现下列亮白色的标题字眼,比较常见的像是:
NAME
└────── 它的全名、「学名」。
LBRARY
└────── 它属於哪一种的 Library。
(Crypt Library, Standard C Library, etc)
SYNOPSIS
└────── 「简介」是也,简洁地说明这东西使用上的概要用法。
DESCRIPTION
└────── 这里会有比较「长~一点」的文字描述来介绍说明。
ENVIRONMENT
└────── 您可以因「机」制宜,而改变这里所列的环境变数。
EXAMPLES
└────── 简单介绍实际使用上的用法范例。
RETURN VALUES
└────── 此 function 在各种状况下的传回值。
SEE ALSO
│ crontab(5), cron(8)
└─── 「另见」者也,如果您阅读完本章的说明手册之後,悟性大发,想要
更上一层楼,一窥 UNIX Programming 的神秘世界,则该篇作者建议
您可以参考的相关部分以继续深入探究,这里举例的是您可以
man 5 crontab 以取得 crontab(5) 说明
或 man 8 cron 以取得 cron(8) 说明
BUGS
│ This man page is too long.
└───── 这里会说明它目前的 bugs。 :)
HISTORY
└───── 这,就是有关这份文件的考古啦...
AUTHORS
└───── 这份说明手册的作者或 maintainer(s) or team。
︴FreeBSD 必备宝典
︴
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html
︴如果您觉得没有中文的话,食之无味,可到 tw.bbs.comp.386bsd 找一位叫做
︴statue 的大大所推动的中文 HOWTO。
︴/usr/share/doc/en_US.ISO_8859-1/books/handbook/index.html
︴实在是进可攻、退可守,送礼自用两相宜,诚乃「居家必备.旅行常用」之良品
。
通常 BBS 编译或安装遇到问题,*强烈建议* 请先自行查阅相关文件(doc)、
手册(man) 以及 source code,看看是否自寻解答,经过一番努力与挣扎之後
,应该都是可以找到解答的,真是「不是一番寒彻骨,争得梅花扑鼻香。」啊~
若真的还没有的话,嗯....这个嘛,
>>> 以下内容编修自 FB3 本身文件(~bbs/bbssrc/doc/Firebird-30) <<<
========================================================================
当然啦,在求助之前请详述您的系统平台、所用的编译器、安装的 BBS 版本,
以及出现的错误讯息等资讯,这样子大家才能容易帮您找出可能发生问题的地方,
不然可能会没人回答您的问题喔!又,在发问前,请先往前找找旧文章并搜寻
,查看是否有人回答过相同的问题,以免浪费网路资源。
========================================================================
当然,若您或得灵感、偶有心得,也欢迎把您的经验回馈给大家一起分享交流。
5)宜兰资教中心.山水兰阳BBS(bbs.ilc.edu.tw)
OS:FreeBSD 4.4R
HW:HP E60(Celeron 450MHz/256MB RAM/9 GB SCSI HD)+Quantum ATLAS V 18.3GB
SEE ALSO
https://bbs.ilc.edu.tw/info.php
6)编译过程所需时间,大致会随以下情况而有所改变:
a) source code 复杂程度和编译时下的 argument(参数)
b) 当时上站人数多寡与外部程式执行状况
c) 机器性能以及 tune(调校) 的功力
7)简单来说,
ipcs →列出 System V interprocess communication facilities 的使用状态﹔
ipcrm→移除特定的 message queues, semaphore sets, and shared segments,
(举例)用法:ipcrm -M <shmkey>
详情请 man ipcs 以及 man ipcrm 。
--
与您分享的快乐胜过独自拥有 :)
--
静中见真境,淡中识本然
--
※ Origin: SayYA 资讯站 <bbs.sayya.org>
◆ From: 61-63-0-host123.kbtelecom.net.tw