cropped-forum.png

論壇總覽 MP500系列微型電腦討論區 關於usb 轉 rs485 回覆至:關於usb 轉 rs485

#1552
Huang Jia-Bin
管理員
    @jb

    你爲什麼須要安裝 gcc-8?

    這樣問,是因爲你已經進入軟體field的核心了。這不是一個風光明媚碧草如茵之地,而是暗無天日的叢林,是越陷越深的沼澤,陷進去往往耗盡幾年青春而無所獲。準備好了嗎?

    gcc的難,在於它不是單獨個體,無法單獨孤立起來處理。gcc和binutils、glibc三者構成一切軟體的核心基礎,叫做toolchain。這三者之間互相依賴,循環式的互相依賴。舉例來說要有gcc-n,需要先有binutils-m和glibc-p;而要有binutils-m,則先要有gcc-n和glibc-p。蛋生雞,雞生蛋,怎辦?

    toolchain n-m-p 組合是在一distribution d 中建構出來,而distribution d 又是靠 toolchain n-m-p build出來的。同樣是蛋生雞、雞生蛋的問題。所以這種可以動的很好的 n-m-p-d 組合,不是隨便可以下載任意版本源碼就可以build出來的,都是靠頂級駭客嘔心瀝血做出來的。以前,這種能夠兜出來n-m-p-d組合很少,能夠兜出來的n-m-p-d對我這種半吊子的人來說,就像生辰八字合不合那樣。

    現在隨着git(不是指github,是指https://git.kernel.org/pub/scm/git/git.git)越做越好,release early, release frequently成爲強有力的滾動式發行,rolling release,n-m-p-d 組合的成功率大爲增加。即使這樣,一般開發者還是不要輕易嘗試,除非已經決定成爲toolchain開發者。

    我的建議是這樣的:
    一、Debian 12 採用 gcc-12,pip3,就專心使用 gcc-12,pip3。
    二、需要用到的軟體儘量在debian 12支援的五、六萬個套件中,或pip3支援的套件中去找。
    三、如果找不到,就請先反問,全世界排名前一百名的Linux distributions,至少將近一半衍生至Debain,依靠debian套件。爲何大家都不會有這樣的需求?大家是如何解決這個問題的?
    四、找到一個有支援的相類似的軟體去修改成符合自己需求的軟體。
    五、千萬不要往回走,例如想要把gcc-8安裝到Debian 12。把你的軟體改成可以用gcc-12 build,絕對不會比把gcc-8安裝到Debian 12難。
    六、以上皆非時,請下定決心成爲toolchain開發者。

    最後,建議隨着rolling release時代的來臨,隨時保持使用的軟體在最新版本狀態,將自己開發的軟體隨時保持最新版本狀態。一成不變,斷代式軟體的時代,很快就會成爲過去。