我正在开发一个需要 GCC 4.7 或更高版本的 C++ 项目。当我在终端的命令行中调用 make
时,它工作正常,但是当我在 Emacs 中运行 M-x compile
时它失败了。
当我在命令行上运行 gcc --version
时,它说
gcc (MacPorts gcc47 4.7.3_0+universal) 4.7.3
但是当我从 Emacs 的 shell 运行 gcc --version
时,它说
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
我做了更多的调查,发现了 Emacs 和 Terminal 之间的另一个区别。我在终端上使用 MacPorts 安装了 GCC 4.7;但是当我在 Emacs 中运行 port install foo
时,它显示 port: command not found
。
为什么会发生这种情况,如何让 Emacs 使用与终端相同版本的 GCC?
最佳答案
M-x shell
启动一个新的 shell。对我来说,它是一个 bash shell,但也可以是 csh 或 zsh 或其他一些 shell。当 emacs 启动一个新的 shell 时,它会运行 ~/.emacs_SHELL,其中 SHELL 是 bash 或 csh 或其他东西。因此,您可以将 shell 启动文件复制到该文件,它应该可以正确设置您的路径和其他环境变量。
在我的例子中,我是一个 bash 用户,所以我将 .profile 复制到 .emacs_bash 并且它起作用了。您可能有 .bash_profile 或 .bashrc 而不是 .profile。但总体思路是相同的:将 emacs shell 启动命令放在 .bash_WHATEVER 文件中。
关于c++ - Emacs shell 与带有 GCC 的终端有不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376294/