如何卸载从源安装的 gcc?

Posted

技术标签:

【中文标题】如何卸载从源安装的 gcc?【英文标题】:How to uninstall gcc installed from source? 【发布时间】:2014-10-07 20:40:41 【问题描述】:

如何卸载从源代码安装的 gcc 版本。我使用的是 gcc 4.9,并且使用的是 ubuntu 12.04。

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

【问题讨论】:

我不太清楚你想做什么。您是否需要最新版本的 GCC,但您构建的那个不起作用?还是您更喜欢使用包管理器?还是您从源代码构建的版本是旧版本? 你应该在...../gcc-4.9.1/configure时间通过类似--program-suffix=-4.9-mine的东西 @BasileStarynkevitch 是对的 - 您应该能够从 /usr/local/bin 中删除该目录,然后使用包管理器安装不同的版本。 从源代码编译recent GCC其实是一个好主意,但是你应该小心...../configure,并给一些@ 987654326@ @roelofs,/usr/local/bin 下不太可能有目录,除非您对 --prefix 做了一些非常奇怪的事情 【参考方案1】:

不幸的是,当您从源代码构建软件包时,通常没有神奇的卸载,但是您可以近似地做到这一点,归功于 this mailing list thread。

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

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

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

从 gcc 源目录中以 root 身份运行它。

要回答您的第二个问题,您可以安装 ubuntu 存储库中可用的最新 gcc:

apt-get install gcc

Overlay repos 可能有更新的版本,我看到一个建议在 ubuntu-toolchain-r/test 有一个更新的版本(通过安装):

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

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

编辑:

看起来@roelofs 在他的回答中找到了一个更好的安装 repo 的指南,所以也去看看那里,如果有帮助记得给他一个支持:)

【讨论】:

在 12.04,apt-get 将安装 4.6,而不是 4.9。 @roelofs 哦,我明白了。我刚刚注意到您的链接有更好的安装 repo 指南。【参考方案2】:

在 GCC 5.1.0 中,虽然没有*** uninstall 目标,但某些目录确实有它,特别是 gcc,所以你可以这样做:

cd build/gcc
sudo make uninstall

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

【讨论】:

这是最简单但仍然相当完整的解决方案所需的提示:pushd build && for d in $(ls -d */); do sudo make -C $d uninstall; done && popd【参考方案3】:

价值有一个良好的开端

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)

【讨论】:

do rm "$F"did not work on CentOS install for some reason...必须做do unlink "$F"才能使这个运行没有错误【参考方案4】:

添加到 Vality 和 Ben。如果您从自己的登录 shell 执行此操作:

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

需要-f 标志,否则如果存在权限问题,脚本可能无法运行。

【讨论】:

【参考方案5】:
/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

【讨论】:

【参考方案6】:

下面的操作真的没问题。当您从源代码制作一个 gcc 并在 gcc-build 处进行安装时,它将在源代码的顶部方向生成一个 gcc 方向。 cd $source_code_top/gcc ,然后进行卸载。它将从您的 linux 系统中清除删除 gcc。

【讨论】:

【参考方案7】:

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

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

【讨论】:

GCC 源代码树没有uninstall 目标到make 这是--prefix而不是--set-prefix,如果你使用--prefix=DIR,那么整个安装将在DIR下,而不是/usr/local/bin

以上是关于如何卸载从源安装的 gcc?的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu中如何卸载arm-linux-gcc-4.3.2.tgz

如何卸载nuget里面的安转包

如何使用 GCC 5.1 和 OpenMP 将工作卸载到 Xeon Phi

lamp源码安装

在linux中如何安装软件?

GCC 中的 OpenMP 4.0:卸载到 nVidia GPU