Linux 如何卸载从源代码安装的gcc?

Linux 如何卸载从源代码安装的gcc?,linux,ubuntu,gcc,ubuntu-12.04,uninstallation,Linux,Ubuntu,Gcc,Ubuntu 12.04,Uninstallation,如何卸载从源代码安装的gcc版本。我使用的是GCC4.9,我使用的是ubuntu 12.04 或者有没有办法通过ubuntu存储库升级到最新的gcc版本?在12.04存储库中,gcc的最高可用版本是4.6。您可以使用软件包管理器安装新版本,但必须添加PPA。链接应该会有所帮助,尽管它适用于稍旧的GCC版本(但可以用于最新版本) 正如一位评论员所指出的,如果您自己构建的GCC版本是使用--prefix参数编译的,那么整个安装应该在/usr/local下的目录中,或者您安装它的任何地方,并且可以删除

如何卸载从源代码安装的gcc版本。我使用的是GCC4.9,我使用的是ubuntu 12.04


或者有没有办法通过ubuntu存储库升级到最新的gcc版本?

在12.04存储库中,gcc的最高可用版本是4.6。您可以使用软件包管理器安装新版本,但必须添加PPA。链接应该会有所帮助,尽管它适用于稍旧的GCC版本(但可以用于最新版本)


正如一位评论员所指出的,如果您自己构建的GCC版本是使用
--prefix
参数编译的,那么整个安装应该在
/usr/local
下的目录中,或者您安装它的任何地方,并且可以删除。

当您从源代码构建包时,不幸的是通常没有神奇的卸载,然而,您可以将其近似为,这要归功于

基本上,您应该再次安装到一个临时目录中,列出在该目录中创建的所有文件,然后您可以通过脚本从主系统中删除所有文件

以下是以这种方式卸载GCC的脚本示例:

make install DESTDIR=/tmp/gccinst
find /tmp/gccinst | sed -e s,/tmp/gccinst,, | \
(while read F; do rm "$F"; done)
从gcc源目录中以root用户身份运行它

要回答您的第二个问题,您可以通过以下方式安装ubuntu repo中提供的最新gcc:

apt-get install gcc
Overlay repos可能有更新的版本,我在ubuntu-toolchain-r/test(通过以下方式安装)上看到了更新版本的建议:

但我不确定他们是否已经增加了4.9。如果不是,您将确实必须从源代码安装

编辑:


看起来@roelofs在他的回答中找到了一个更好的安装回购协议的指南,所以也去那里看看,如果有帮助的话记得给他一个升级票:)

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)

在GCC 5.1.0中,虽然没有顶级的
卸载
目标,但某些目录确实有它,特别是
GCC
,因此您可以执行以下操作:

cd build/gcc
sudo make uninstall

这不会删除已安装的所有内容,但会删除主要的可执行文件,如
gcc
g++
cpp
。。。包含在该目录中,因此可能就足够了。

添加到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构建时进行安装时,它将在源代码的顶部方向生成一个gcc方向。cd$source\u code\u top/gcc,然后进行卸载。它将从linux系统中清除gcc

我不太清楚你想做什么。您是否需要最新版本的GCC,但您构建的版本不起作用?或者您更喜欢使用包管理器?或者从源代码生成的版本是旧版本吗?您应该在
../gcc-4.9.1/configure
time@BasileStarynkevitch是正确的-您应该能够从
/usr/local/bin
中删除该目录,然后使用软件包管理器安装不同的版本。实际上,从源代码编译最新版本是一个好主意,但您应该仔细配置,并给出一些
--program suffix
@roelofs,
/usr/local/bin
下不太可能有目录,除非您对
--prefix
GCC源代码树做了一些非常奇怪的事情,没有一个
卸载
目标来
使它成为
--prefix
而不是
--set prefix
,如果您使用
--prefix=DIR
,那么整个安装过程都会失败将在2004年12月12日处于
目录下,而不是
/usr/local/bin下,
apt get
将安装4.6,而不是4.9。@roelofs哦,我明白了。我刚刚注意到你的链接有一个更好的安装repo的指南。
do rm“$F”
由于某种原因无法在CentOS上安装。。。必须执行
do unlink“$F”
才能使此运行无误这是最简单但仍然相当完整的解决方案所需的提示:
pushd build&&for d in$(ls-d*/);dosudo-make-C$d卸载;完成(&popd)
/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
/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