2013-06-29 1 views
0

GCC 4.7 이상을 필요로하는 C++ 프로젝트에서 작업하고 있습니다. 터미널의 명령 행에서 make을 호출하면 제대로 작동하지만 이멕스에서 M-x compile을 실행하면 실패합니다. Emacs 셸이 GCC를 사용하는 터미널과 다른 동작을합니다

내가 명령 줄에 gcc --version 실행

, 그것은

gcc (MacPorts gcc47 4.7.3_0+universal) 4.7.3 

를 말합니다하지만 이맥스 내 쉘에서 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을 설치했습니다. 하지만 이멕스에서 port install foo을 실행하면 port: command not found이라고 표시됩니다.

왜 이런 일이 일어나고 Emacs가 터미널과 동일한 버전의 GCC를 사용할 수 있습니까?

+1

도크 (예 : Emacs)에서 시작된 응용 프로그램에서 쉘의 환경이 설정되지 않는 것이 일반적인 macosx 문제입니다. – Stefan

+0

@Stefan이 문제를 해결하는 방법을 알고 계십니까? –

답변

2

M-x shell은 (는) 새로운 셸을 시작합니다. 나에게는 bash 쉘이지만 csh 나 zsh 또는 다른 쉘이 될 수있다. emacs가 새로운 셸을 시작하면 ~/.emacs_SHELL을 실행합니다. 여기서 SHELL은 bash 또는 csh 또는 무언가입니다. 따라서 셸 시작 파일을 해당 파일에 복사 할 수 있으므로 경로 및 다른 환경 변수가 올바르게 설정되어야합니다.

제 경우에는 bash 사용자입니다. 그래서 .profile 파일을 .emacs_bash로 복사하면 효과적입니다. .profile 대신 .bash_profile 또는 .bashrc가있을 수 있습니다. 그러나 일반적인 생각은 동일합니다. emacs 쉘 ​​시작 명령어를 .bash_WHATEVER 파일에 넣으십시오. 하지만이 경우라면, 당신은 않을 것 - 당신이 는이 메이크 파일에 구성되어 있지 않으면, GCC 실행 파일의 위치 (PATH 환경 변수에 의해 결정된다을 컴파일 MX 터미널 또는 를 통해 GCC를 실행 여부

0

당신이 묘사하고있는 문제가 있습니다). 그래서, 우선 터미널에서 그것을 확인 :

echo $PATH 

당신은 이맥스에서, 그리고

which gcc 

를 사용하여 실행 파일의 위치를 ​​두 번 확인할 수

(getenv "PATH") 

즉 무엇 make은 이맥스가 Mx컴파일을 통해 그것을 시작할 때 볼 수 있습니다. setenv을 사용하여 터미널에있는 값으로 변경하십시오. 이맥스의 변수 exec-pathPATH과 동기화하여 변경할 수도 있습니다. 해당 변수는 문자열 목록 (= 경로)이며 add-to-list을 사용하여 경로를 추가합니다.

관련 문제