alias gcc='gcc -fpermissive' 或修改 ./configure 脚本

alias gcc='gcc -fpermissive' 或修改 ./configure 脚本

我正在从源代码编译相当大的项目。编译总是以以下结果结束:错误:从“const char*”到“char*”的转换无效 [-fpermissive]

我一年前就编译过这个项目。所以我知道一个解决方案。实际上我找到了更多解决方案:

  1. 在 cpp 代码的适当行中添加类型转换(每个文件中都有无数次更改。所以我找到了下一个解决方案。)
  2. 修改 makefile 以使用 -fpermissive 选项编译该文件。(我不得不修改每个 makefile 中的很多行。因此,我找到了更好的解决方案。)
  3. “g++”或“gcc”存储在一个变量中,所以我向这些变量添加了-fpermissive。

这是我能想到的最好的解决方案。只需将此选项添加到每个 makefile 一次即可。不幸的是,该软件的子目录数量巨大。因此我需要修改 100 多个 makefile。一年前我花了一整天时间才完成。

有没有办法可以更快地完成此操作。

这个怎么样? alias gcc='gcc -fpermissive' 我不熟悉别名。但试试这个应该很容易。语法正确吗?这个正确吗? alias g++='g++ -fpermissive' ?我需要以某种方式导出别名吗? make 程序会尊重别名吗?

我是否应该更改 ./configure 脚本?或者 ./configure.in?或者其他文件?

答案1

通过在文件中放置相关行,可以最轻松地设置别名~/.bashrc。发出命令时,BASH 将搜索$PATH该名称的可执行文件的第一个实例。~/.bashrc文件中的别名总是会被首先找到,因此如果您的别名与实际命令同名(例如gcc),则将执行该别名。

因此,根据您的情况,将以下几行添加到您的~/.bashrc(是的,语法是正确的):

alias gcc='gcc -fpermissive'
alias g++='g++ -fpermissive'

或者,您可以创建不同的别名,以便选择是否需要该-fpermissive标志:

alias gcc_per='gcc -fpermissive'
alias g++_per='g++ -fpermissive'

这样,您就可以根据需要使用gccto run/usr/bin/gccgcc_perto run /usr/bin/gcc -fpermissive。显然,您可以将别名设置为您想要的任何名称,名称由您决定。

将相关行添加到您的之后~/.bashrc,要么获取它(source ~/.bashrc)要么打开一个新终端,然后您的新别名就设置好了,可以使用了。

答案2

我知道这是个老问题,但是为了将来参考:

在 中的别名gccg++.bashrc内不起作用make。但是,您可以在 内覆盖make的变量CC和:CXX.bashrc

export CC="gcc -fpermissive"
export CXX="g++ -fpermissive"

当然,这要求您在 makefile 的显式规则中使用$(CC)$(CXX),但无论如何您都应该这样做。默认情况下,它们在隐式规则中使用。

相关内容