컴파일러의 모든 출력을 파일로 캡처하려면 어떻게합니까?
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
'Nice programing' 카테고리의 다른 글
Scala의 "eval" (0) | 2020.12.26 |
---|---|
Java에서 부울과 부울의 차이점은 무엇입니까? (0) | 2020.12.26 |
레지스트리에없는 Python 버전 2.6이 필요합니다. (0) | 2020.12.26 |
For 루프 계속 (0) | 2020.12.26 |
다른 테이블이 아닌 한 테이블에서 선택 (0) | 2020.12.26 |