Re: [問題] make有辦法顯示錯誤的地方嗎?

看板FreeBSD作者時間18年前 (2007/04/25 19:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
※ 引述《oooooo.bbs@bbs.wretch.cc》之銘言: > ※ 引述《drlai.bbs@ptt.cc (蘇打)》之銘言: > > 我抓了一個網路上的程式 > > 裡面有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 <chinsan@xxx.xxx> 》License: GNU FDL Version 1.1, March 2000 》※ 本文章若有錯誤,請不吝指教。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 「安裝是一回事,最需花心力照顧的還是後續的維護。」 By chw(aka woju) <chw@ms.iii.org.tw> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ────────────────────────────────────── (壹) 修改 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 <vanilla@FreeBSD.org> ────────────────────────────────────── (陸) 後記 ────────────────────────────────────── any idea? mailto:s865462@student.thu.edu.tw ────────────────────────────────────── (柒) 參考資料 ────────────────────────────────────── [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 <paul@vix.com>, 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
文章代碼(AID): #16Bpmq00 (FreeBSD)
文章代碼(AID): #16Bpmq00 (FreeBSD)