精華區beta Programming 關於我們 聯絡資訊
※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言: : ※ 引述《HZYSoft.bbs@ptt.cc (PCMan 2004)》之銘言: : > 各個 distro 設計方式和維護管理大異其趣,gcc 版本一天到晚在變 : > gcc3 升級 gcc4 我相信很多程式都因此不能用了,必須要做不少修改 : 這不能歸罪於 gcc 版本變動, : 而是你很剛好的碰到了 C 語言標準 10 年一次的大幅修改, : 而且事實上從 1999 年開始 gcc 還是「漸進式」的拿掉跟 C 語言新標準不合的支援, : 一開始先用 warning message 警告, : 過了很久很久才把回溯相容拿掉。 這絕對不是 gcc 的錯,但是它確實有造成不方便 這篇文章要討論的只是把很多因素加進來考慮, 並不該真的一面倒的認為 Linux 上的開發就一定比較好 : 我倒不覺得 10 年的時間叫做一天到晚, : 一個 1989 年的 code 能用到 1999 年已經夠久了, Windows API 不計入 Win 16 部份也有十年了,也是夠久了,Win16 API 至今還相容 因此相形之下真的沒有差很多,一面倒的批評 Windows 並不公道 我回這篇文章,要描述的只是這點。 : 雖然實際的期間可能是 1991 到 2001,不必計較這個。 : > 而一個在 debian 下很好的程式,在 Fedora 卻不能運作,是很正常的事情 : > 設定檔擺放位置在各系統上也不同,各系統上的 libc 都是不同版本 : > 彼此間還有不相容的地方,光是維護這些你就昏頭了 : 試試看跑個 ldconfig 之類的。 當然要 run 最後一定是可以有方法 run 起來 只是那要花使用者和開發者不少精神,而這是開發時必須考慮的問題 並不能當作沒看到然後一面倒的說 Windows 一定比較差 : > 一個 Linux 程式要拿到 FreeBSD 去編譯就要改老半天了, : 雖然 FreeBSD 的 linux emulator 有少部分程式沒辦法跑, : 但是大部分的程式你丟過去並不需要重新編譯, : FreeBSD 能直接 run Linux 的程式已經行之有年了。 這點我知道,但要編譯成 FreeBSD 程式,光 #include 就都不一樣 要 link 的檔案也可能不同,雖然都有 doc 可以查,但是那真的很浪費時間 : > 程式裡充滿 #ifdef : > 而同一個函數,有些系統的符合 POSIX,有些不符合,你根本不能保證到了其他 : > 不同版本的 Linux 上你的程式會怎麼運作。 總是有地方需要 patch : > 實際開發過 Linux 和 Windows 程式,坦白講,真的不覺得有比較省事。 : .................這個 : 練習搭配 autoconf 來寫跨平台程式吧, 我一直都在用 autfconf,也寫過跨平台程式 但還是有很多麻煩的地方要處理,查半天文件才知道需要 check 那些東西 還有 Linux 和 FreeBSD 下 lib 名不一樣的,要 link 真的很麻煩 #include 要一堆 #ifdef 這點真的很惱人 而且...吃過 intltool 的虧,根據某高手說, FC 某版的 intltool 沒包好 導致程式在其他 distro 都正常,拿過去就是不能編譯,後來有出更新修正了 : 只要辛苦一次你就會發現世界很美好, : 雖然一堆 #ifdef 少不了。 是很美好啦,但是憑良心講 Windows 並沒有像先前網友罵得這麼差 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.59.3