아래 편집자는 Linux g++에서 static 라이브러리와 동적 라이브러리를 컴파일하고 사용하는 방법에 대한 기사를 가져올 것입니다. 편집자는 이것이라고 생각합니다. 꽤 좋습니다. 지금 공유해서 참고용으로 올려보겠습니다.
windows 환경에서는 일반적으로 VS 프로젝트와 같은 IDE에서 C++ 프로젝트를 개발합니다. 정적 라이브러리(*.lib) 및 동적 라이브러리(*.dll) 사용은 이미 익숙할 수 있지만 Linux 환경에는 해당 정적 라이브러리(*.a) 및 동적 라이브러리와 같은 또 다른 모드 세트가 있습니다. (*.so)는 다른 방식으로 생성되고 사용됩니다. 처음에는 익숙하지 않을 수 있지만 VS의 구성만큼 단계가 복잡하지 않기 때문에 많이 사용한 후에는 익숙해져야 합니다. Linux에서 정적 라이브러리와 동적 라이브러리를 생성하고 사용하는 방법을 정리하면 다음과 같습니다. (C++ 프로젝트이므로 컴파일러에서는 g++를 사용하지만 gcc를 사용하는 것과 동일합니다.)
우선 , 준비 작업
은 필요한 내용을 캡슐화하는 것입니다. 라이브러리 파일의function에 대한 헤더 파일과 소스 파일은 다음과 같이 작성됩니다.
//myAPI.h int ADD(int a, int b); int MINUS(int a, int b);
//myAPI.cpp #include "myAPI.h" int ADD(int a, int b){ return a + b; } int MINUS(int a, int b){ return a - b; }
//main.cpp #include "myAPI.h" #include <iostream> int main(){ std::cout << "1 + 1 = " << ADD(1, 1) << std::endl; std::cout << "1 - 1 = " << MINUS(1, 1) << std::endl; return 0; }
g++ -c myAPI.cpp
명령을 사용하여 Linux에서 정적 라이브러리를 생성하여 myAPI를 처리합니다. .o 파일을 생성하여 정적 라이브러리 파일을 생성합니다. 생성된 라이브러리 파일은 사양을 따라야 하며 Linux의 라이브러리 파일에는 "lib" 접두사가 추가되어야 합니다. 따라서 이 예제에서는 다음을 통해 libmyAPI.a 정적 라이브러리를 생성할 수 있습니다. 명령:
ar crv libmyAPI.a myAPI.o
g++ main.cpp libmyAPI.a -o output
./output
Linux에서 컴파일할 때 -shared 매개변수를 통해 동적 라이브러리(.so) 파일을 생성할 수 있습니다. 다음과 같이 생성된 라이브러리
g++ -shared -fPIC -o libmyAPI.so myAPI.o
g++ main.cpp -L. -lmyAPI -o output
드라이버
프로그램이 공유 함수 라이브러리 libmyAPI.so를 참조 하면 에 다음 오류가 표시되면 libmyAPI.so를 /usr/lib 디렉토리로 이동하세요. 으르르르르
위 내용은 Linux에서 g++ 컴파일과 정적 및 동적 라이브러리 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!