Nice programing

컴파일러의 모든 출력을 파일로 캡처하려면 어떻게합니까?

nicepro 2020. 12. 26. 16:36
반응형

컴파일러의 모든 출력을 파일로 캡처하려면 어떻게합니까?


Linux에서 소스 (CPP)에서 오픈 소스 프로젝트를 만들고 있습니다. 이것은 순서입니다 :

$CFLAGS="-g Wall" CXXFLAGS="-g Wall" ../trunk/configure --prefix=/somepath/ --host=i386-pc --target=i386-pc
$make

컴파일하는 동안 많은 컴파일러 경고가 표시됩니다. 나는 그것들을 고치기 시작하고 싶다. 내 질문은 파일의 모든 컴파일러 출력을 캡처하는 방법입니다.

$make > file일을하지 않습니다. g++ -someoptions /asdf/xyz.cpp이 명령 실행의 출력을 원하는 것처럼 컴파일러 명령을 저장하는 것 입니다.


컴파일러 경고는에서 발생 stderr하지 않고 stdout에서 발생 하므로 make다른 곳으로 리디렉션 할 때 경고 가 표시되지 않습니다 . 대신 Bash를 사용하는 경우 다음을 시도하십시오.

$ make &> results.txt

&수단 "이 위치에 리디렉션 표준 출력 및 표준 오류". 다른 쉘은 종종 유사한 구조를 가지고 있습니다.


본 쉘에서 :

make> my.log 2> & 1

즉>는 stdout을 리디렉션하고 2> & 1은 stderr을 stdout과 동일한 위치로 리디렉션합니다.


지금까지 좋은 답변이 많이 있습니다. 다음은 프릴입니다.

$ make 2>&1 | tee filetokeepitin.txt 

출력 스크롤을 과거로 볼 수 있습니다.


출력은 stderr로 이동했습니다. 2>그것을 포착하는 데 사용하십시오 .

$make 2> file

에서 http://www.oreillynet.com/linux/cmd/cmd.csp?path=g/gcc

> 문자는 표준 오류를 리디렉션하지 않습니다. 오류 메시지로 파일을 정리하지 않고 합법적 인 출력을 저장하려는 경우 유용합니다. 그러나 오류 메시지가 저장하려는 경우 어떻게됩니까? 이것은 문제 해결 중에 매우 일반적입니다. 해결책은 앰퍼샌드 다음에보다 큼 기호를 사용하는 것입니다. (이 구조는 거의 모든 최신 UNIX 쉘에서 작동합니다.) 표준 출력과 표준 오류를 모두 리디렉션합니다. 예를 들면 :

$ gcc invinitjig.c >& error-msg

도움이된다면 거기를보세요 : 다른 포럼


빌드 출력에서 ​​경고 및 오류를 강조한다고 가정합니다.

make |& grep -E "warning|error"

시도해보십시오 make 2> file. 컴파일러 경고는 표준 출력 스트림이 아닌 표준 오류 스트림에서 나옵니다. 내 제안이 작동하지 않으면 표준 오류를 전환하는 방법에 대한 쉘 설명서를 확인하십시오.


일반적으로 원하는 작업이 아닙니다. 컴파일러의 출력을 읽고 문제가있는 파일 / 줄 문자로 이동하는 것을 지원하는 편집기에서 컴파일을 실행하려고합니다. 고려할 가치가있는 모든 편집자에서 작동합니다. 다음은 emacs 설정입니다.

https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation.html

참조 URL : https://stackoverflow.com/questions/2297536/how-do-i-capture-all-of-my-compilers-output-to-a-file

반응형