이 Linux 명령의 기능은 무엇입니까?

이 Linux 명령의 기능은 무엇입니까?
g++ -Wall -I/usr/local/include/thrift *.cpp -lthrift -o something

이는 Apache Thrift 웹사이트에서 가져온 것입니다.

또한 -I/usr은 -I /usr?이어야 합니다.

답변1

다음은 명령에 대한 분석입니다. 첫 번째는 참조용 원본 명령입니다.

g++ -Wall -I/usr/local/include/thrift *.cpp -lthrift -o something

이제 고장에 들어갑니다.

g++

이는 실제 명령 명령인 g++. 실행중인 프로그램입니다. 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

gcc - GNU 프로젝트 C 및 C++ 컴파일러

C++ 및 C로 작성된 프로그램을 위한 컴파일러입니다. 기본적으로 C 또는 C++ 코드를 가져와 프로그램으로 변환합니다.

-Wall

이 부분을 사용하면 컴파일할 때 모든 경고가 표시됩니다. (모두에게 경고)

-I/usr/local/include/thrift

이 부분은 헤더 파일을 가져올 디렉터리로 g++사용하도록 지시합니다. /usr/local/include/thriftI 뒤에 공백을 추가할지 여부에 대한 질문도 있습니다. 어느 쪽이든 할 수 있습니다. 옵션(옵션은 -명령에서 기호 뒤에 오는 것이며 -Wall옵션 -I입니다)은 공백을 넣을지 여부를 허용하는 방식으로 구문 분석됩니다. 이는 개인 취향에 따라 다릅니다.

*.cpp

이 부분은 .cpp현재 디렉터리의 모든 파일을 g++명령에 전달합니다.

-lthrift

이것도 작동합니다 -l thrift. 링크시 라이브러리를 검색하라고 나와있습니다 g++.thrift

-o something

이는 실행 파일을 파일에 넣기 위해 모든 것이 컴파일되는 시점을 알려줍니다 something.

답변2

일반적으로 말하면 다음 명령에 대한 문서를 찾아야 합니다.매뉴얼 페이지: man g++. GNU 소프트웨어(예: GCC)의 경우 일반적으로 다음 위치에서 더 완전한 문서를 찾을 수 있습니다.메시지 형식, 또는 HTML에서소프트웨어 홈페이지.

C(및 C++) 컴파일러에는 옵션(피연산자 앞의 옵션, 옵션과 인수 사이의 선택적 공백 등)에 대한 일반적인 규칙을 따르지 않는 다소 특수한 구문이 있습니다. 다음 공백은 -I실제로 선택사항이지만 -Wall단어여야 합니다.

다음은 명령에 대한 간략한 개요입니다(자세한 내용은 설명서 참조).

  • g++C++ 컴파일러 실행
  • -Wall의심스러운 코드에 대해 경고( -Wall실제로 가능한 모든 경고가 아닌 중요한 경고만 의미함)
  • -I/usr/local/include/thrift이 디렉토리에서 포함 파일( #include지시문) 을 찾으세요.
  • *.cpp이 파일을 컴파일하세요
  • -lthrift이 라이브러리에 대한 링크(이 검색 libthrift.a). 이는 "이 시점에 정의되지 않은 기호가 있으면 특정 라이브러리에서 정의를 찾으십시오"를 의미하므로 -l컴파일 중인 파일 뒤에 와야 합니다.-l
  • -o something컴파일 및 링크의 출력을 지정된 파일에 배치합니다.

관련 정보