簡體   English   中英

如何卸載從源安裝的gcc?

[英]How to uninstall gcc installed from source?

如何卸載我從源碼安裝的gcc版本。我正在使用gcc 4.9而我正在使用ubuntu 12.04。

或者有沒有辦法通過ubuntu存儲庫升級到最新的gcc版本?

當你從源代碼構建一個包時,遺憾的是通常沒有魔法卸載,但你可以近似這個,這歸功於這個郵件列表線程

基本上你應該再次安裝到一個臨時目錄中並列出在所述目錄中創建的所有文件,然后你可以通過腳本從主系統中刪除所有這些文件。

以下是以這種方式卸載GCC的腳本示例:

make install DESTDIR=/tmp/gccinst
find /tmp/gccinst | sed -e s,/tmp/gccinst,, | \
(while read F; do rm "$F"; done)

以root用戶身份從gcc源目錄中運行它。

要回答第二個問題,您可以在ubuntu repo中安裝最新的gcc:

apt-get install gcc

疊加回購可能有更新的版本,我已經看到有一個建議,在ubuntu-toolchain-r / test(安裝通過)有一個更新的版本:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

但我不確定他們是否還加了4.9。 如果不是,您確實必須從源代碼安裝。

編輯:

看起來@roelofs在他的回答中找到了一個更好的指南來安裝回購,所以去看那里也記得給他一個upvote如果有幫助:)

在GCC 5.1.0中,雖然沒有頂級uninstall目標,但有些目錄確實有它,特別是gcc ,所以你可以這樣做:

cd build/gcc
sudo make uninstall

這不會刪除已安裝的所有內容,但會刪除該目錄中包含的主要可執行文件,如gccg++cpp ...,這樣就足夠了。

Vality有一個很好的開始

make install DESTDIR=/tmp/gccinst

但他的清理命令有一些問題。 首先,它將目錄傳遞給rm ,包括通常的目錄(例如/usr )。 我們可以通過-type f解決這個問題:

find /tmp/gccinst -type f | sed -e s,/tmp/gccinst,, | \
    (while read F; do rm "$F"; done)

擺脫這個留空的目錄......

find /tmp/gccinst -depth -type d -not -empty | sed -e s,/tmp/gccinst,, | \
    (while read F; do rmdir -p --ignore-fail-on-non-empty "$F"; done)

加入Vality和Ben。 如果您從自己的登錄shell執行此操作:

find $HOME/tmp/gccinst/ -type f | sed -e s,$HOME/tmp/gccinst,, | (while read F; do rm **-f** "$F" ; done)

如果存在某些權限問題,則需要-f標志或腳本可能無法運行。

以下操作確實沒問題。 當你從源代碼制作一個gcc並在gcc-build中進行安裝時,它將在源代碼的頂部方向上生成一個gcc方向。 cd $ source_code_top / gcc,然后進行卸載。 它將清除你從linux系統中刪除gcc。

/root/ihome3/gcc-4.6.3/gcc-build-4.6.3/gcc
[root@izwz93atpyz gcc]# make uninstall
rm -rf /usr/local/bin/c++
rm -rf /usr/local/bin/g++
rm -rf /usr/local/share/man/man1/g++.1
rm -rf /usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.6.3
rm -rf /usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.6.3
rm -rf /usr/local/bin/gcc
rm -f /usr/local/bin/cpp
if [ x != x ]; then \
  rm -f /usr/local//cpp; \
else true; fi
rm -rf /usr/local/bin/gcov`enter code here`
rm -rf /usr/local/share/man/man1/gcc.1
rm -rf /usr/local/share/man/man1/cpp.1
rm -f /usr/local/share/info/cpp.info* /usr/local/share/info/gcc.info*
rm -f /usr/local/share/info/cppinternals.info* /usr/local/share/info/gccint.info*
[root@izwz93atpalb56zydy9bpyz gcc]# pwd
/root/ihome3/gcc-4.6.3/gcc-build-4.6.3/gcc

12.04存儲庫中GCC的最高可用版本是4.6。 您可以使用包管理器安裝較新版本,但您必須添加PPA。 這個鏈接應該有所幫助,雖然它適用於較舊版本的GCC(但可以用於最新版本)。

正如評論者指出的那樣,如果你自己構建的GCC版本是使用--prefix參數編譯的,那么整個安裝應該在/usr/local下的目錄中或安裝它的任何地方,並且可以刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM