※ 引述《HZYSoft.bbs@ptt.cc (PCMan 2004)》之銘言:
> 各個 distro 設計方式和維護管理大異其趣,gcc 版本一天到晚在變
> gcc3 升級 gcc4 我相信很多程式都因此不能用了,必須要做不少修改
這不能歸罪於 gcc 版本變動,
而是你很剛好的碰到了 C 語言標準 10 年一次的大幅修改,
而且事實上從 1999 年開始 gcc 還是「漸進式」的拿掉跟 C 語言新標準不合的支援,
一開始先用 warning message 警告,
過了很久很久才把回溯相容拿掉。
我倒不覺得 10 年的時間叫做一天到晚,
一個 1989 年的 code 能用到 1999 年已經夠久了,
雖然實際的期間可能是 1991 到 2001,不必計較這個。
> 而一個在 debian 下很好的程式,在 Fedora 卻不能運作,是很正常的事情
> 設定檔擺放位置在各系統上也不同,各系統上的 libc 都是不同版本
> 彼此間還有不相容的地方,光是維護這些你就昏頭了
試試看跑個 ldconfig 之類的。
> 一個 Linux 程式要拿到 FreeBSD 去編譯就要改老半天了,
雖然 FreeBSD 的 linux emulator 有少部分程式沒辦法跑,
但是大部分的程式你丟過去並不需要重新編譯,
FreeBSD 能直接 run Linux 的程式已經行之有年了。
> 程式裡充滿 #ifdef
> 而同一個函數,有些系統的符合 POSIX,有些不符合,你根本不能保證到了其他
> 不同版本的 Linux 上你的程式會怎麼運作。 總是有地方需要 patch
> 實際開發過 Linux 和 Windows 程式,坦白講,真的不覺得有比較省事。
.................這個
練習搭配 autoconf 來寫跨平台程式吧,
只要辛苦一次你就會發現世界很美好,
雖然一堆 #ifdef 少不了。
--
Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net
School: National Chung Cheng University
Department: Computer Science and Information Engineering
Researching: Porting GCC and Implementing VLIW instruction scheduler in GCC
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.16 > ╰─╮
╚╦═╦╝ ╰ * From:218-171-140-241.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎