Linux

自編版GCC覆蓋包安裝版

  • October 31, 2015

我正在使用 debian 來完成我的大部分編碼工作,並且我正在做一個家庭作業項目,該項目需要某個版本的 gcc 來編譯我正在處理的程序。

我下載了 gcc 源並編譯/安裝了它,但忘記更改任何選項,所以我認為它安裝到了預設位置,在我的例子中是 /usr/local/bin/gcc。當我這樣做時,我並沒有真正提前計劃,當我意識到我已經完成了我的家庭作業的 gcc 版本時,我不知道如何刪除它。Google搜尋後,我意識到這實際上是不可能的,除非我使用了我沒有使用的 checkinstall。但是現在,由於 /usr/local/bin 在我的路徑中領先,它預設使用我的新版本 gcc 進行編譯,這在我嘗試使用 gdb 調試這些版本的應用程序時會導致問題。我還擔心這會導致其他應用程序出現不必要的行為,從而搞砸事情。

注意:我不能只重新組織我的路徑,因為 /usr/local/bin 中有一些應用程序我希望覆蓋 /usr/bin 中的應用程序

所以我的問題是:你如何使用來自儲存庫的打包應用程序來管理自編譯應用程序?我的意思是,解決這個問題的正確方法是什麼,這樣它們就不會發生衝突,並且可以安全地移除而不搞砸任何東西?在混合它們方面,我將如何使用應用程序的自編譯版本作為打包版本的依賴項?我不認為 debian 會自動辨識如果我安裝 gdb 或其他東西,我的本地版本的 gcc 將符合標準。

另外作為旁注:你到底在哪里安裝編譯的應用程序?/usr/local/bin? /選擇?/home/user/bin? /自己的目錄?

如果我寫得不好或任何事情,我深表歉意,如果需要,我可以澄清更多。

您可以通過使用make’s-n--dry-run選項獲得編譯 gcc 時安裝的文件的列表 - 例如make -n install在 gcc 源目錄中執行,並將輸出重定向到文件。

通過一些後處理(例如使用sed),這應該會給您一個可以刪除的文件列表 - 但要小心,在承諾刪除它們之前檢查列表的完整性。

引用自:https://unix.stackexchange.com/questions/98868