2010-05-17 4 views
0

리눅스에서 파일 만들기 :
컴파일이 성공한 경우에만 출력 프로그램을 실행하고 싶습니다.linux/unix and makefiles

이 방법이 있습니까?

답변

3

다른 사람들이 말한 것과 마찬가지로, &&을 사용하십시오. 예 :

$ make && ./a.out 

이 작업에는 두 가지 사항이 있습니다. 첫째, 유닉스에서 성공한 모든 것이 0을 리턴하는 (C 프로그램 포함) 규칙이 있습니다. Romans에는 C 프로그램을 성공적으로 종료 할 수있는 제로가 없었기 때문에 "로마 제국이 무너 졌음"을 기억하는 데 도움이되는 오래된 농담이 있습니다.

두 번째로, &&은 부울 "및"의 "단락 회로"버전입니다. 즉, 왼편의 표현을 평가할 것이고, 단지 0이라면 오른쪽의 표현을 평가할 것입니다. 이것은 Java 연산자 && (단락)과 & (항상 두 피연산자를 평가 함) 간의 차이이기도합니다. 불필요한 표현식의 오른쪽 피연산자에 부작용 (예 : I/O, 변수 업데이트)이있는 경우 많은 피연산자 언어에 두 가지 연산자가 모두 포함됩니다.이 경우 반드시 두 피연산자를 모두 평가해야합니다. 그러나 어떤 사람들은 이러한 방식으로 부작용을 포함시키는 것이 좋지 않다고 말합니다.

1

하여 내장 된 실행 파일이 다음과 같은 일을 할 수 a.out라는 경우 : ... 난 이런 모습을 생각할 수

% make && ./a.out 
5

가장 쉬운 방법을

run: program_name 
     ./program_name 

"실행을"해야 program_name이없고 컴파일 할 수 없으면 실패합니다.

3

make가 성공하면 0을 반환하고 컴파일이 실패하면 2를 반환합니다. 나는 bash로 다음을 시도했다.

make && ./success 

여기서 success는 생성 된 바이너리의 이름이다.
& &은 첫 번째 프로그램이 성공한 경우에만 두 번째 프로그램이 실행된다는 것을 보증합니다.