누군가가 내게 왜 특히 우리가 ./a.out을 사용하여 프로그램을 실행하는지 설명 할 수 있습니까?리눅스에서 C 프로그램 실행
의미가 있습니까?
누군가 설명을 제공해 주시겠습니까?
누군가가 내게 왜 특히 우리가 ./a.out을 사용하여 프로그램을 실행하는지 설명 할 수 있습니까?리눅스에서 C 프로그램 실행
의미가 있습니까?
누군가 설명을 제공해 주시겠습니까?
./
부분을 의미하는 것은 안전을위한 것입니다. Windows는 기본적으로 현재 디렉토리를 PATH에 추가합니다.이 디렉토리는 좋지 않습니다 (DLL 삽입 등의 위험이 있습니다). a.out
부분을 의미하는 경우 gcc -o 매개 변수를 수정하여 변경할 수있는 이름 (형식 a.out 형식의 이름) 일뿐입니다.
다른 방법. 형식 "aout"(더 이상 현대 시스템에서 사용되지 않음)의 이름은 유닉스 시스템에서 "어셈블러 출력"을위한 전통적인 파일 이름 인 파일명'a.out'에서 왔습니다. –
이름은 "assembler output"이며 컴파일러에서 생성 된 실행 파일의 기본 이름이었습니다. 현재 디렉토리 (.
)가 $PATH
이 아니기 때문에 ./
이 필요하기 때문에 실행 파일의 경로를 명시 적으로 지정해야합니다.
bash와 같은 쉘처럼 실행 파일을 실행하려면 bash
의 실행 파일을 찾아서 프로그램을 찾아 실행해야합니다.
접두사는 실행 파일의 전체 경로를 지정하기위한 축약 형 방식이므로 bash는이를 실행하기 위해 PATH 변수 (일반적으로 현재 디렉토리를 포함하지 않음)를 참조 할 필요가 없습니다.
는 [더 출력 파일 이름이 지정되지 않은 경우 ("어셈블러 출력"의 줄임말) a.out
를 들어, gcc
같은 컴파일러의 기본 실행 파일 출력입니다.]
gcc -o mynewprogram mynewprogram.c
의 a.out이의 기본 이름입니다 컴파일러. AFAIK는 연결 프로세스가 건너 뛰고 객체 또는 라이브러리로 컴파일되지 않기 때문입니다.
어쨌든 이것은 * 뒤에있는 * 의미를 설명하지 않습니다. –
그것은 구문 일뿐입니다. 용서해주십시오. – Bytemain
C로 더 자세히보고 싶다면 C 프로그램이 으로 컴파일 된입니다.
기본적으로 소스 코드는 #define
및 #include
같은 지침 (예를 들어 메모리에)로드 된 전처리로 전송됩니다. 따라서 사용하려는 라이브러리가로드됩니다.
#include <math.h>
것이다 기본적으로 '붙여 넣기'가 정의되는 지점에서 소스 코드에 math.h
의 내용을 표시합니다. 이 모든 물건이 밖으로 확장되면
는 컴파일러 바이너리 코드의 소스입니다 오브젝트 코드,에 소스 코드를집니다. a.out 빌드 이름을 지정하지 않으면이 출력의 기본 이름입니다.
SO를 잘 받았습니다. 좀 더 정확하게 질문을 공식화 해주십시오. 당신이 이해하지 못하는 것은 무엇입니까? '. /'앞의'. 'a.out' 그 자체? 어떤 종류의 * 의미 *를 찾고 있습니까? –