![自编版GCC覆盖包安装版](https://linux22.com/image/3652/%E8%87%AA%E7%BC%96%E7%89%88GCC%E8%A6%86%E7%9B%96%E5%8C%85%E5%AE%89%E8%A3%85%E7%89%88.png)
我使用 debian 来完成大部分编码工作,并且我正在做一个家庭作业项目,需要特定版本的 gcc 来编译我正在处理的程序。
我下载了 gcc 源代码并编译/安装了它,但忘记更改任何选项,所以我认为它安装到了默认位置,在我的例子中是 /usr/local/bin/gcc。当我这样做时,我并没有真正提前计划,当我意识到我已经完成了 gcc 版本的作业时,我不知道如何删除它。经过谷歌搜索,我意识到这实际上是不可能的,除非我使用了 checkinstall,但我没有使用。然而现在,因为 /usr/local/bin 在我的路径中位于前面,所以它默认使用我的较新版本的 gcc 进行编译,这在我尝试使用 gdb 调试这些版本的应用程序时会导致问题。我还担心这会在其他应用程序中导致不必要的行为,从而将事情搞砸。
注意:我不能只是重新组织我的路径,因为 /usr/local/bin 中有一些应用程序,我希望覆盖 /usr/bin 中的应用程序
所以我的问题是:如何使用存储库中的打包应用程序来管理自编译的应用程序?我的意思是,解决这个问题的正确方法是什么,这样它们就不会发生冲突,并且可以安全地删除而不会搞砸任何事情?在混合它们方面,我将如何做一些事情,例如使用应用程序的自编译版本作为打包版本的依赖项?我不认为 debian 会自动识别,如果我安装 gdb 或其他东西,我的本地版本的 gcc 将满足标准。
另请注意:您到底在哪里安装编译的应用程序? /usr/local/bin? /选择? /home/用户/bin? /自己的目录?
如果我写得不好或有什么问题,我深表歉意,如果需要的话我可以澄清更多。
答案1
make
您可能会通过使用's-n
或选项来获取编译 gcc 时安装的文件的列表--dry-run
- 例如make -n install
在 gcc 源目录中运行,并将输出重定向到文件。
通过一些后处理(例如使用sed
),这应该会给您一个可以删除的文件列表 - 但要小心,在承诺删除它们之前先对列表进行健全性检查。