Eclipse_VSCode_C_CPP.png

    九月時工作上接到一項任務,內容是評估某硬體方案的可能性。該硬體設備廠商有提供 Windows 與 Linux 兩種方案讓客戶選擇,為了趕進度,所以直接以熟悉的 Windows 方案使用 C# 進行試作,可惜評估結果不盡人意(硬體問題)。然而在此評估過程中,也讓我意識到 Linux 可能也是商用硬體設備的選項之一,所以在中秋節連假期間,除了吃飯睡覺拉屎看電視打電動逛街人擠人之外,把剩下的時間全都花在學習建置「Linux 環境開發 C/C++」這件事情上了。四天連假結束,算是有點收獲,開篇文章把這些學習心得記錄下來,免得以後很快又忘記。

    這篇文章以「在 Linux 環境下開發 MQTT C/C++ Client 應用程式」為目標情境,打造 Linux 環境下相對友善的 C/C++ 開發環境,使用 Linux 版 IDE 工具進行 C/C++ 程式開發。

    為何要以「開發 MQTT C/C++ Client」作為目標情境?原因是牽涉到 IDE 開發工具中引入 Library (函式庫套件)編譯的設定指令,大部分應用軟體一定是這麼做,所以拿 MQTT C/C++ Library 作為範例情境。如果只是在 Linux 環境下用 IDE  寫個 print Hello World ,就不用特意寫這篇文章來記錄了。

    一、準備工作

    一台運作 Ubuntu 18.04 並可連結 Internet 的電腦,虛擬機器也行。(Linux Ubuntu 18.04 下載網址

    二、基本技能

    • 使用 IDE 開發程式的基本經驗
    • Linux 終端機環境基本指令操作

    三、設置 Linux 基本開發環境

    本文以 MQTT C/C++ Client 為例,所以先把 MQTT 的可運作環境架起來,意思是在 Ubuntu 電腦上安裝 MQTT Broker 就行了。在安裝 MQTT Broker 之前,記得要用終端機跑一次套件更新:

    $ sudo apt update && sudo apt upgrade -y

    3.1 安裝 Mosquitto MQTT Broker

    Linux(Ubuntu)安裝 MQTT Broker 超簡單!終端機一行指令搞定。

    $ sudo apt install mosquitto mosquitto-clients -y

    等安裝程序跑完就可以了。可以用 service mosquitto status 查看 MQTT Broker 的狀態,亮綠燈寫著 active (running) 就代表運作中。

    2020-10-05 00-03-05 的螢幕擷圖.png

    如果不死心還想測試 MQTT 是否能正常運作,可以開兩個終端機視窗,各自輸入指令就行了。

    截圖 2020-10-05 上午12.16.14.png

    以上圖來說,下方的視窗發出「Hello world 測試」的內容,上面的視窗有接收到。

    3.2 安裝 Eclipse Paho MQTT C/C++ Client Library

    嚴格來說得分成兩個部分:C Library 與 C++ Library,不過 Eclipse Paho 的 MQTT C++ Client Library 又依附在 MQTT C Client Library 上,換句話說不僅兩個都要安裝,而且要先安裝 C Library 再安裝 C++ Library。聽起有點複雜,其實官方也幫我們把安裝 C Library -> 安裝 C++ Library 的自動腳本都做好了,跟著以下指令操作即可:

    $ sudo apt install git build-essential gcc make cmake cmake-gui cmake-curses-gui libssl-dev doxygen graphviz libcppunit-dev -y
    $ cd ~
    $ git clone https://github.com/eclipse/paho.mqtt.cpp
    $ cd paho.mqtt.cpp
    $ ./install_paho_mqtt_c.sh
    $ cmake -Bbuild -H. -DPAHO_BUILD_DOCUMENTATION=TRUE -DPAHO_BUILD_SAMPLES=FALSE
    $ sudo cmake –build build/ –target install
    $ sudo ldconfig

    指令看起來有點多,不過整個做完也差不多一兩分鐘而已。跑完之後,/usr/local/lib 與 /usr/local/include 兩個目錄下會新增一些 MQTT 用到的 Library 二進位檔與 .h 標頭檔如下:

    貼上的影像_2020_10_5_上午12_50.png

    貼上的影像_2020_10_5_上午12_52.png

    做到這裡,C/C++ MQTT Client Library 套件就已經安裝設置完成,找個範例程式試著編譯執行看看。以 ~/paho.mqtt.cpp/src/samples 底下的 topic_publish.cpp 範例程式為例:

    $ cd ~/paho.mqtt.cpp/src/samples
    $ g++ -g -o topic_publish topic_publish.cpp -lpaho-mqttpp3 -lpaho-mqtt3cs -lpaho-mqtt3as -lstdc++
    $ ./topic_publish

    2020-10-05 02-36-34 的螢幕擷圖.png

    若編譯和執行都沒出現錯誤訊息,表示已經可以在這個環境下用 C/C++ 撰寫與編譯 MQTT 的應用程式了。在 -o xxxx 後面的一大串參數,就是編譯時需引用的程式碼或 Library 函式庫。

    確認 Library 安裝設置很重要,若沒弄好,後面 IDE 的編譯設置也會跟著出問題。所以要確認上面的動作都沒問題之後,後面導入 IDE 的動作才能繼續。

    四、C/C++ 的 IDE 工具設定

    接下來簡單介紹兩款支援 Linux 環境的 C/C++ IDE 開發工具:Eclipse 公司的 Eclipse for C/C++,以及微軟的 Visual Studio Code(簡稱 VSCode)。

    兩款工具都需要經過若干設定才能用於開發 C/C++,Eclipse 設定相對簡單但使用上不直覺(不好用),而 VSCode 則是反過來,設定複雜但容易使用,且提示功能強大。要使用哪一種端看個人習慣與喜好。

    接下來以上述的 topic_publish.cpp 為例,說明如何把現成的程式導入 IDE 進行開發撰寫與除錯。

    首先必須先把 topic_publish.cpp 程式做基本的「專案化」,也就是先建立新目錄,將程式複製到新目錄之後,並在該目錄將編譯指令做成 Makefile 文字檔。操作方式:

    (1) 將 topic_publish.cpp 複製到 ~/[新目錄]/topic_publish.cpp ,這裏新目錄名稱用 topic_publish。

    (2) 在此目錄下手動建立 Makefile 設定檔(nano Makefile),內容如下

    all:
        g++ -g -o topic_publish topic_publish.cpp -lpaho-mqttpp3 -lpaho-mqtt3cs -lpaho-mqtt3as -lstdc++
    clean:
        rm topic_publish

    2020-10-07_11-53-03_的螢幕擷圖.png

    要強調的是,指令的前面要用 Tab 鍵而非空白鍵,也就是 g++ 與 rm 的前面是 Tab 而非空白,這點非常重要!最後存檔離開。

    接著在目錄下執行 make 指令,看看編譯時會不會依照 Makefile 指令進行編譯。

    2020-10-07 12-03-14 的螢幕擷圖.png

     

    若沒什麼錯誤訊息,表示 topic_publish.cpp 程式的「專案化」完成。接著就能把這個「專案」導入 IDE 工具了。

    4.1 Eclipse

    4.1.1 下載 Eclipse

    Eclipse 下載網址:https://www.eclipse.org/downloads/packages/

    選擇「Eclipse IDE for C/C++ Developers」的 Linux 64-bit 版下載即可。

    貼上的影像_2020_10_5_上午2_50.png

    下載檔案是 .tar.gz 壓縮檔,直接點擊後會開啟壓縮檔管理員,把壓縮檔內的 eclipse 目錄,直接拖曳就行了(建議安裝在 [家目錄] ,後續比較方便)。

    貼上的影像_2020_10_5_上午2_56.png

    進入 eclipse 之後,直接點擊 eclipse 執行檔就可運行 Eclipse。

    貼上的影像_2020_10_5_上午3_03.png

    4.1.2 使用 Eclipse 開發 C/C++

    啟動運行 Eclipse,第一次執行會問 workspace 的目錄,不做任何更動,點擊 Launch

    2020-10-07 11-43-23 的螢幕擷圖.png

    點擊「Import a project with a working Makefile」

    2020-10-07_11-57-49_的螢幕擷圖.png

    依下圖步驟 1. ->2. ->3. :

    2020-10-07_12-04-54_的螢幕擷圖.png

    選擇 ~/topic_publish 目錄,點擊 Linux GCC,按 Fihish 。

    把「Welcome」頁籤關掉,終於進入 C/C++ 開發介面模式。

    2020-10-07_12-13-36_的螢幕擷圖.png

    可以看得出開發介面的功能相當完整但有點複雜,上就是上圖標示出來的那些比較重要,細節請自行 Google。然後即使匯入專案,仍少了 Launch Configuration 設定。(上圖紅框)。

    然後重點來了…在專案名稱上按右鍵 –> Build Project。這麼做的目的是先讓 Eclipse IDE 跑一遍 Makefile 的設定並自動偵測,否則後面無法使用 Launch Configuration 設定精靈。

    貼上的影像_2020_10_7_下午12_31.png

    接著點擊新增 Launch Configuration 開啟設定精靈。

    貼上的影像_2020_10_7_下午12_23.png

    按 Next ,

    2020-10-07_12-24-15_的螢幕擷圖.png

    可設定 Launch Configuration 名稱,若不設定直接按 Finish 即可。

    2020-10-07_12-35-46_的螢幕擷圖.png

    這樣就大致設定完成了。

    2020-10-07 12-42-08 的螢幕擷圖.png

    4.1.3 Eclipse 的一般 IDE 功能:

    支援一般 IDE 該有的功能,例如自動完成(AutoComplete),顯示定義,以及 Debug Break Point 等。

    未命名-1.png

    上述可以發現 Eclipse 提供了精靈工具,在執行設定步驟時多半是根據指示下一步就完成了,但精靈設定還是不夠親民,有時不小心搞錯一個動作,就會搞不懂為何沒有下一步的選項。

    4.2 微軟 Visual Studio Code(VSCode)

    我在先前寫過 VSCode 撰寫 pythonPHP 的文章,設定上雖然不複雜,但還是有些很神奇的騷操作。沒想到 VSCode 撰寫 C/C++ 的設定更是奇葩,騷操作更多。

    不過搞定這些騷操作之後,用起來的感覺真的很不錯,還有一大堆外掛可滿足個人特定需求。所以比起 Eclipse,我個人是推薦使用 VSCode 來開發 C/C++。

    在此先強調一個觀念:用 VSCode 撰寫 C/C++ 需先在專案根目錄底下的 .vscode 子目錄內建立三個設定檔:c_cpp_properties.json,tasks.json,launch.json。不過找了一大堆網路教學,全都沒交代這三個檔案是怎麼生出來的,格式跟項目為何要長成那樣。雖然最笨的方式雖然可以手動一個字一個字敲打產生,但完全不建議這麼做。

    事實上可以透過一堆騷操作生成三個設定檔,產生之後只需針對專案的特性,修改局部微調即可,偏偏網路教學很多都是抄來抄去,全都沒有介紹如何自動生成(不知是否因為下錯關鍵字,總之我找了很久沒找到),所以光是 C/C++ 的設定檔騷操作我就式了將近一天,總算搞出設定檔的生成流程。

    三個設定檔的生成還有順序,順序錯了生成的內容也會跟著錯,大家都說「Visual Studio」 是地表最神的 IDE 工具,但為何多一個 Code 字,就得搞得如此折騰人生呢?微軟啊微軟,我真的是搞不懂你….

    好了,牢騷發完,進入正題。

    4.2.1 下載並安裝:下載網址,選 .deb 版即可。

    截圖_2020-10-07_下午1_09_40.png

     下載後直接點擊 .deb 檔進行安裝,依照畫面指示進行安裝即可。安裝完成之後,應用程式列表就會出現熟悉的 Visudl Studio Code 圖示。在終端機內輸入「code」也能啟動。

    截圖_2020-10-07_下午5_21_07.png

    4.2.2 使用 Visual Studio Code 進行 C/C++ 開發

    (1)開啟終端機,進入專案目錄 ~/topic_publish,在該目錄底下執行指令「code .」(注意 code 後面有個「點」號)

    $ cd ~/topic_publish
    $ code .

    接著就會開啟 VSCode 並自動將 topic_publish 專案導入。以下是介面概述:

    2020-10-07_17-27-29_的螢幕擷圖.png

    主動提示區的功能很好用,會自動預測你現在可能想做什麼而作出提示,例如有時會建議你可能遇到什麼問題,安裝什麼插件或做什麼操作可以解決。當然了,如果預測不是想要的,可以點擊 X 不理它。這裡就不提主動提示區的功能了。

    第一件事,就是安裝需要的插件,點擊插件市集按鈕,安裝以下五個插件:

    • Bracket Pair Colorizer:不同括號層級顯示不同括號顏色(已內建於 Visual Studio Code)
    • C/C++ for Visual Studio Code:微軟自帶的C/C++外掛。
    • C/C++ Clang Command Adapter:提供靜態檢測(Lint)
    • C++ Intellisense:一組功能的名稱,這些功能可讓撰寫程式碼變得更方便。
    • Include Autocomplete:提供標頭檔案名字的補全。

    其他插件參考

    • C/C++ Snippets:自動插入程式碼片段。
    • C++ Helper:提供撰寫 C++ 程式時一些好用的快速功能。
    • Doxygen Documentation Generator:產生程式碼說明註解的好東西。
    • theme-chromodynamics:熟悉的佈景主題。
    • Chinese (Traditional) Language Pack for Visual Studio Code:介面中文化。

    截圖 2020-10-18 上午10.11.19.png

    4.2.3 依序產生三個設定檔

    三個設定檔依序為

    1. c_cpp_properties.json
    2. tasks.json
    3. launch.json

    三個設定檔都在專案目錄的 .vscode 子目錄下。上面提到三個設定檔也必須依照順序生成,接下來就是進入連續騷操作的步驟,所有的操作都有個重點:把編輯區視窗停留在 .cpp 主檔案上,再進行相關操作。

    (1) 生成第一個設定檔:c_cpp_properties.json。

    依下圖 1. -> 2. -> 3. -> 4.

    貼上的影像_2020_10_7_下午6_03.png

    接著出現命令框,選擇「C/C++:Edit Configurations (UI)」(或是「C/C++:Edit Configurations (JSON) 也可以」。 

    貼上的影像_2020_10_7_下午6_06.png

    出現選項式的介面,原則上都不需要更動任何設定。

    貼上的影像_2020_10_7_下午6_08.png

    將「C/C++ Configuration」頁籤關閉。然後就可以看到在 .vscode 目錄下自動產生第一個設定檔「c_cpp_properties.json」。可以透過下圖的 1. -> 2. 查看,原則上不需任何更動。

    貼上的影像_2020_10_7_下午6_11.png

    然後必須再回到點擊 .cpp 上,否則後面的生成動作會出錯。

    貼上的影像_2020_10_7_下午6_18.png

    (2) 接著繼續生成第二個設定檔:tasks.json。

    在回到 .cpp 的前提下,依下圖點擊 1. Terminal -> 2. Configure Default Task…

    貼上的影像_2020_10_7_下午6_21.png

    會開啟選擇視窗。意思是選擇不同的編譯器,基本上選擇哪一個都可以,我選擇 gcc 這一項。第二個設定檔 tasks.json 也會自動生成。

    貼上的影像_2020_10_7_下午6_24.png

    貼上的影像_2020_10_7_下午6_26.png

    不過 tasks.json 內的 args 參數必須手動修正,原因是 topic_publish.cpp 必須引用 MQTT C++ Client 的參數才能正常編譯。參考 Makefile 內容,加入一些編譯參數如下:

    貼上的影像_2020_10_7_下午6_33.png

    第二個 tasks.json 也完成了。務必再把視窗切回到 topic_publish.cpp。

    貼上的影像_2020_10_7_下午6_38.png

    (3) 接下來,生成第三個設定檔:launch.json。

    依下圖點擊 1.Run -> 2. Open Confighration

    貼上的影像_2020_10_7_下午6_40.png

    跳出選擇項目,選擇「C++ (GDB/LLDB」

    貼上的影像_2020_10_7_下午6_42.png

    又一層選擇視窗,原則上選哪一個都一樣。由於前面已經選擇了 gcc,這裏也一樣選擇 gcc 項目

    貼上的影像_2020_10_7_下午6_46.png

    第三個設定 launch.json 也會自動生成,並且 VSCode 會順便自動跑一下相關設定,也會自動切換到除錯模式。正常的話切下方換到 TERMINAL 視窗(如下圖)可以看到程式編譯完成也跑過一遍。

    貼上的影像_2020_10_7_下午6_49.png

    這樣就大致完成專案的設定了。依上述的操操作,只需要修改 tasks.json 的 args 項目,加入必要的 Library 而已,其他都不用特別更動。

    貼上的影像_2020_10_7_下午6_55.png

    4.2.4 Visual Studio Code 開發 C/C++ 的一般 IDE 功能:

    支援一般 IDE 該有的功能,例如自動完成(AutoComplete),顯示定義,以及 Debug Break Point 、顯示變數值等。

    未命名-1.png

    五、後記

    以上只是短短四天的個人學習心得,也只算是 IDE for C/C++ 設定的最.最.最….最初步入門而已,IDE for C/C++ 真正的用法應該不只有這樣,像是 CMake 這類進階的用法。哪天有研究出更好用的方式,會再回頭過來補完這篇文章。 

    (2020.10.25 補充)經過一段時間的摸索,透過使用 VSCode 找到更簡單的設定方式。使用一個叫「Fenix」的延伸插件就行了。透過這個插件,可以很輕鬆的產生 C++ 專案設定。

    截圖_2020-10-25_上午9_29_25.png

    首先先用 MSCode 開啟一個新的空白的目錄,我們將在這個目錄產生新的 C++ 專案。在 Fenix 安裝啟用之後,左邊會出現新的圖示。依下圖的順序指示點擊:1. 圖示 -> 2. Easy C++ Projects -> 3. +號 -> 4. Open Fenix

    截圖_2020-10-25_上午9_34_56.png

    接著會出現 Fenix 的主畫面,再依序點擊 5.Language C++ -> 6. [G++/GDB] -> 7. Create

    截圖_2020-10-25_上午9_42_38.png

    切回專案的檔案總管(下圖左邊紅框圖示),就可以看到產生一個最基本的 C++ 專案了。它已經幫你把 Makefile 和 VSCode 最重要的兩個設定:tasks.json 與 launch.json 都弄好了。

    截圖_2020-10-25_上午9_52_54.png

    最近研究在研究 Makefile 的撰寫,說真的 Makefile 也是一門深奧的學問,網路教學也不少。這個自動產生的 Makefile 內容長這樣:

    截圖 2020-10-25 上午10.03.06.png

    不過後來我在練習撰寫時,發現這個 Makefile 是有問題的。在預設產生 Makefile 內容的第 20 行,必須要改成這樣:

    $(CXX) -I$(INCLUDE) -L$(LIB) $^ -o $@ $(LIBRARIES) $(CXX_FLAGS)

    截圖 2020-10-25 上午10.08.19.png

    也就是要將 $(CXX_FLAGS) 移到最右邊,後續在使用時才不會有問題。

    六、初步成果

    經過多日的練習,我做了一個 C++ 專案放在 Github 上(BeMqttSample):

    截圖 2020-10-25 上午10.16.40.png

    專案的目的是使用 paho.mqtt.cpp 另外再撰寫了自訂 class 類別 BeMqttClient,讓 MQTT Client 更直覺、簡單,容易使用,最短只需三行宣告就能驅動 MQTT Client 運行。這個專案就是用這篇文章提到的內容(paho.mqtt.c/cpp Client library,Makefile,Microsoft Visual Studio Code…),一步一步慢慢兜出來的。

    修改了預設的 Makefile 的內容,加入 include 目錄的 cpp 編譯(因為 BeMqttClient 的原始碼放在這裡),並可支援 macOS 與 Linux 的環境(因為 macOS 沒有 -luuid 否則編譯會出錯。-luuid 是 Linux 環境下的 uuid 套件,亦需用 apt 安裝 uuid-dev 才能使用。)

    截圖_2020-10-25_上午10_43_41.png

    若對這個自訂 class 類別內容有興趣的話,請讀者們自行上 github.com/benjenq/BeMqttSample 參考囉!

     

    8 Comments

    1. 能不能請教個安裝 linux 的問題
      前些日子我的電腦爆了..目前已買過新的…作業系統 win11
      我用新電腦外接舊電腦的硬碟發現舊電腦的硬碟是好的…我想修電腦的說主機板壞了或許是正確的(也有可能只是壞CPU或電源供應器)
      我再查了一下更早報廢的的電腦硬碟..發見D碟好的..C碟無法讀取(作業系統XP)
      這讓我想到…會不會其實硬體是好的…只是C槽硬碟壞了
      如果原來XP這台更老的電腦我把他的D槽硬碟再裝回去…
      1.在沒有作業系統的情況下是不是有可能灌LINUX
      2.或我把那顆硬碟當作新電腦的外接應碟(目前可以運作)..然後先用新電腦灌LINUX
      再裝回舊電腦
      這兩種方式是否有任一個成功的可能
      若有…該怎麼做……
      我的目的是想用舊電腦上上網….或者也可以順便學學在LINUX上寫寫C++
      反正能讓陪我多年的老朋友又活過來是一件令人高興的事….
      版主回覆:(10/16/2022 01:09:26 PM)
      從您的問題,感覺上您對 Linux 似乎有點誤會….
      Linux 本身就是作業系統,安裝 Linux 跟安裝 Windows 的概念基本上是相同的。下載 Linux 的安裝檔(通常是 .iso 格式),把 .iso 製作成安裝光碟,或是做成USB安裝隨身碟, 電腦只要選擇用這張光碟或是 USB 碟開機,就能安裝 Linux 系統了。
      所以第一個問題,答案是可以的。「安裝作業系統」本來就是在沒有作業系統的電腦上進行的。
      第二個問題:不建議。在電腦 A 安裝的 Linux 系統,移到電腦 B 上,有可能無法開機。
      如果您最終目的是想拿舊電腦來練習 Linux ,那麼我覺得不用這麼麻煩。用您目前的 Windows 11 電腦,安裝虛擬機軟體(VirtualBox 或是 VMWare),然後在虛擬機上安裝 Linux 就行了,會少走很多冤枉路。
      如果您是想著淘汰不用的舊電腦可以再怎麼用,那麼我的建議是先評估要不要升級,例如加個 RAM 或是換個 SSD 改善速度之後,看結果如何,再來決定舊電腦的用途。
      另外如果是想在 XP 的舊電腦上玩 Linux ,XP 的硬體少說都 15 年以上了,Linux 的系統也是跟著時代與時俱進,得試過才知道行不行,很有可能踩坑徒勞。所以我才建議在新電腦上用虛擬機練習 Linux 會省事很多。

    2. 下午看了一些該如何安裝LINUX
      決定把舊電腦灌LINUX
      把硬碟裝回主機內
      開機….
      只顯示檢查硬體設備就卡住了
      進不了BIOS設定
      重開機後就甚麼也沒有了
      或許….
      它或許是用最後的一絲力氣來 say hello
      可以不必再胡思亂想了….
      版主回覆:(10/17/2022 01:29:44 AM)
      最大的問題應該不在於裝不裝 Linux,
      基本上只要開機還看得到畫面,
      就表示主板、CPU、RAM、顯示卡的問題不大,
      卡在硬體 POST 畫面過不去,
      我的個人經驗大多是硬碟的問題,
      又可能是 CPU 散熱的問題
      (散熱功能全無,一過電 CPU 就熱當,畫面就在POST時卡住了,
      解決方式是清潔CPU風扇、重上散熱膏,然後就恢復了)
      電腦硬體排查有些技巧和原則,
      但多是經驗法則,很難有標準答案

    3. 這……..
      真的要我重燃希望嗎?
      散熱膏應該比較好處理…我上網再查一下該怎麼處理
      我想再請教一下怎麼裝硬碟
      對了…目前我有重測硬碟外加到新電腦沒問題
      問題是要裝回原來的電腦時…可能線裝得有問題
      目前有一個STAT線…但主機板上有兩個SATA線的插槽..是上下排列的
      不知道有沒有規定要先插哪一格插槽
      還有一個應該是電源線(五條線並在一個黑色塑膠插座)_..是兩個串接在一起的
      有沒有規定要先接中間那一個…還是先接末端那一個
      我想如果是硬碟的問題…可能就是我線插錯了….
      如果還能開機…..才再來想灌LINUX的問題了
      以上
      謝謝~~
      版主回覆:(10/17/2022 11:49:15 PM)
      主機板只有兩個 SATA 埠,又只有跑 XP ,機器應該有快 20 年了,
      主機板通常上面會標示 SATA_0 跟 SATA_1,插在 SATA_0 上應該就可以了。
      不過,硬體排錯的動作,通常先用最少量的硬體開機,然後逐一的插回去觀察,
      例如,先不要插硬碟,記憶體只插一支,如果有內顯的話就只用內顯(不插顯卡),
      然後看看能不能進 BIOS,可以的話就一件一件把原來的硬體插回去,
      看插到哪個東西會導致進不去 BIOS ,八九不離十就是那個東西出問題。
      (我覺得是硬碟問題的嫌疑最大,但這不代表硬碟壞掉了)
      如果是插到硬碟才出問題的話,那麼這顆硬碟可以試著在新電腦上重新格式化(若有重要資料,就先複製到新電腦上),之後再把硬碟插回舊電腦看情況,
      如果過了 POST 之後出現沒有 BOOT 的裝置時,
      表示硬碟全清空時不會干擾開機,
      這時候就可以嘗試安裝新系統了。
      如果還有光碟機的話,我的建議是找一張 XP 光碟試著安裝看看,
      那麼舊的電腦,那時代用 USB 開機的問題很多,是很長一段故事…
      總之如您所說,先搞定能不能開機的問題,再來想要安裝什麼系統…
      如果預料沒錯的話,你的電腦最多只能裝到 Windows 7 而已,
      能做的事情可能不多了,上網看 Youtube 都會跳格
      老電腦想物盡其用其實是有的,
      例如有人做路由器,有人做成 NAS 雲端儲存,有人做成復古電玩機,
      但大多是玩票性質居多,因為最大的缺點是「耗電」,
      每天 24 小時開著電費絕對有感,
      而且對於不熟悉電腦的人來說,那都是一段很長的學習路。

    4. 我已經查出我著主機板為華碩 P5LD2…後面沒有外加因文字了
      我的顯卡 KCC-REM-MSQ-C2132P
      似乎沒有內顯…主機外殼背面找不到另一個接螢幕的地方
      目前拔掉硬碟..外顯卡…只有一支記憶體
      這樣開機雖然看不到螢幕顯示仍是感覺不到進入BIOS
      現在還沒重上散熱膏….
      我還有一台確認主機板掛掉的電腦
      主機板為KCC-REM-MSQ-P8B75 後面好像還有M甚麼的
      顯卡為90PA0530-MOXBNO
      我在想90PA0530這張顯卡不知道能不能用到 P5LD2主機板上
      因為我都查不到他們的電壓和相關規格
      版主回覆:(10/18/2022 11:02:50 PM)
      第一張是 2005 年的板子,對應 Pentium 4 CPU,我是建議不用想太多了。應該連看影片都跑不動。
      我查了一下兩台電腦的顯示卡,好像都是 GT630 ,應該都是 PCI-e x 16 的插槽,基本上顯示卡只要順順的插在主機板上,就不會有什麼電壓規格問題,你可以試試看。

    5. 我拔下兩張外顯卡比較
      1.金手指長度不同..90PA0530金手指比 P5LD2主機板上的插槽還要長
      2.我也想調換一下記憶體測看看…兩台的記憶體金手指的防呆槽位置不同
      結論…兩台的零件不能互換…兩台各收回一顆可以用的硬碟
      看來要結案了…..
      換一個方式想….如果真要摸一下 Linux 的話
      能不能就把這舊硬碟當成外接硬碟來灌 Linux
      要跑 Linux 的時候就接上外接硬碟
      要跑微軟視窗的時候就拔掉外接硬碟
      雖然有點瘋瘋的…是否可行?
      版主回覆:(10/20/2022 09:38:56 AM)
      舊硬碟應該可以安裝到新電腦上,現在的新電腦裝三五顆硬碟都是家常便飯,
      用新電腦在舊硬碟上裝 Linux 就行了,
      開機時在 POST 階段,看是按 F9 或 F2 或是 F10 (看廠商主板的設計,BOOT MENU 的按鈕)就會出現開機裝置的選單,
      就不會跟原本的 Windows 11 互相打架。
      如果要把 Linux 裝在外接 USB 硬碟上,我個人是沒試過,理論上可行。

    6. 之所以不把舊硬碟裝在新電腦內…因為我怕手殘
      所以….我不曾拆過新的任何東西
      理論上可行的東西…改天就來試試看囉
      謝謝你這段時間用心與耐心地提供建議
      謝謝你喔~~

    7. 版大好~~我又來吵你了
      我想請教一下有關C++寫多重文件的問題
      之前我套用 Dev C++ 的預設程式碼 MDI Editor 來改寫增加程式碼
      雖然可以開出多個文件…但每個文件的內容卻都一樣
      目前我已經將工作區改成不是 Editor…而是一片空白可以讓我在
      case WM_PAINT:
      TextOut(…)輸出文字
      MoveToEx(……,NULL);
      LineTo(……..); 畫表格
      但問題仍在
      1.我畫一張表格來填資料….當開多個視窗想填幾份不同的資料時
      每個視窗的資料內容又都變成一樣…並沒有辦法同時填上不同筆的資料
      (就是沒辦法用同一個表格開幾個視窗同時處理 A 又處理 B)
      2.我沒辦法製作另一個視窗的不一樣的表格
      請問我該怎樣才能做到像 Dev C++ 的 IDE 一樣….可以一個寫resource.rc….一個寫main.h…..一個寫main.cpp
      對了…因為系統為 Win11 的關係…我的 Dev C++ 5.11 版怪怪的
      所以改用 Red Panda C++
      畢竟我不是電腦相關科系出身….工作上也與電腦無關….所以沒有相關資源可以求救
      只好又來麻煩版大了….

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *