운영 및 유지보수 리눅스 운영 및 유지 관리 Linux에서 g++ 컴파일과 정적 및 동적 라이브러리 사용에 대한 자세한 설명

Linux에서 g++ 컴파일과 정적 및 동적 라이브러리 사용에 대한 자세한 설명

May 28, 2017 am 11:32 AM

아래 편집자는 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; 
}
로그인 후 복사

마지막으로 먼저 myAPI.cpp 파일을 컴파일하여 myAPI.o 대상 파일

g++ -c myAPI.cpp
로그인 후 복사

1을 생성하고

명령을 사용하여 Linux에서 정적 라이브러리를 생성하여 myAPI를 처리합니다. .o 파일을 생성하여 정적 라이브러리 파일을 생성합니다. 생성된 라이브러리 파일은 사양을 따라야 하며 Linux의 라이브러리 파일에는 "lib" 접두사가 추가되어야 합니다. 따라서 이 예제에서는 다음을 통해 libmyAPI.a 정적 라이브러리를 생성할 수 있습니다. 명령:

ar crv libmyAPI.a myAPI.o
로그인 후 복사

그러면 프로젝트 컴파일 과정에서 정적 라이브러리를 사용할 수 있습니다. 이때 라이브러리 함수 myAPI.cpp의 정의는 더 이상 필요하지 않습니다. main.cpp 컴파일 명령은 다음과 같습니다. 종속 정적 라이브러리 파일은 종속성 뒤에 배치되어야 합니다.

g++ main.cpp libmyAPI.a -o output
로그인 후 복사

컴파일이 완료되면 실행 파일 출력을 실행할 수 있습니다. 이때 libmyAPI.a도 더 이상 명령을 실행할 필요가 없습니다. 출력 결과는 다음과 같습니다.

./output
로그인 후 복사

2. 동적 라이브러리를 생성하고

Linux에서 컴파일할 때 -shared 매개변수를 통해 동적 라이브러리(.so) 파일을 생성할 수 있습니다. 다음과 같이 생성된 라이브러리

g++ -shared -fPIC -o libmyAPI.so myAPI.o
로그인 후 복사

는 컴파일 타임에 선언되어야 하며 런타임에 종속되어야 합니다. 선언은 다음과 같습니다

g++ main.cpp -L. -lmyAPI -o output
로그인 후 복사

"-L." 플래그는 함수 라이브러리가 현재 디렉터리에 있을 수 있음을 G++에 알려줍니다. ; "-lmyAPI" 플래그를 사용하여 G++

드라이버

프로그램

이 공유 함수 라이브러리 libmyAPI.so를 참조 하면 에 다음 오류가 표시되면 libmyAPI.so를 /usr/lib 디렉토리로 이동하세요. 으르르르르

위 내용은 Linux에서 g++ 컴파일과 정적 및 동적 라이브러리 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

아파치를 시작하는 방법 아파치를 시작하는 방법 Apr 13, 2025 pm 01:06 PM

Apache를 시작하는 단계는 다음과 같습니다. Apache 설치 (명령 : Sudo apt-get Apache2를 설치하거나 공식 웹 사이트에서 다운로드) 시작 apache (linux : sudo systemctl start : windes (선택 사항, Linux : Sudo SystemCtl

Apache80 포트가 점유 된 경우해야 할 일 Apache80 포트가 점유 된 경우해야 할 일 Apr 13, 2025 pm 01:24 PM

Apache 80 포트가 점유되면 솔루션은 다음과 같습니다. 포트를 차지하고 닫는 프로세스를 찾으십시오. 방화벽 설정을 확인하여 Apache가 차단되지 않았는지 확인하십시오. 위의 방법이 작동하지 않으면 Apache를 재구성하여 다른 포트를 사용하십시오. Apache 서비스를 다시 시작하십시오.

Apache 서버를 다시 시작하는 방법 Apache 서버를 다시 시작하는 방법 Apr 13, 2025 pm 01:12 PM

Apache 서버를 다시 시작하려면 다음 단계를 따르십시오. Linux/MacOS : Sudo SystemCTL 실행 Apache2를 다시 시작하십시오. Windows : Net Stop Apache2.4를 실행 한 다음 Net Start Apache2.4를 시작하십시오. Netstat -A |를 실행하십시오 서버 상태를 확인하려면 Findstr 80.

Apache를 시작할 수없는 문제를 해결하는 방법 Apache를 시작할 수없는 문제를 해결하는 방법 Apr 13, 2025 pm 01:21 PM

다음과 같은 이유로 Apache가 시작할 수 없습니다. 구성 파일 구문 오류. 다른 응용 프로그램 포트와 충돌합니다. 권한 문제. 기억이 없습니다. 프로세스 교착 상태. 데몬 실패. Selinux 권한 문제. 방화벽 문제. 소프트웨어 충돌.

데비안 syslog를 배우는 방법 데비안 syslog를 배우는 방법 Apr 13, 2025 am 11:51 AM

이 안내서는 데비안 시스템에서 syslog를 사용하는 방법을 배우도록 안내합니다. Syslog는 로깅 시스템 및 응용 프로그램 로그 메시지를위한 Linux 시스템의 핵심 서비스입니다. 관리자가 시스템 활동을 모니터링하고 분석하여 문제를 신속하게 식별하고 해결하는 데 도움이됩니다. 1. syslog에 대한 기본 지식 syslog의 핵심 기능에는 다음이 포함됩니다. 로그 메시지 중앙 수집 및 관리; 다중 로그 출력 형식 및 대상 위치 (예 : 파일 또는 네트워크) 지원; 실시간 로그보기 및 필터링 기능 제공. 2. Syslog 설치 및 구성 (RSYSLOG 사용) Debian 시스템은 기본적으로 RSYSLOG를 사용합니다. 다음 명령으로 설치할 수 있습니다 : sudoaptupdatesud

인터넷은 Linux에서 실행됩니까? 인터넷은 Linux에서 실행됩니까? Apr 14, 2025 am 12:03 AM

인터넷은 단일 운영 체제에 의존하지 않지만 Linux는 이에 중요한 역할을합니다. Linux는 서버 및 네트워크 장치에서 널리 사용되며 안정성, 보안 및 확장 성으로 인기가 있습니다.

아파치 취약성을 수정하는 방법 아파치 취약성을 수정하는 방법 Apr 13, 2025 pm 12:54 PM

Apache 취약점을 수정하는 단계는 다음과 같습니다. 1. 영향을받는 버전을 결정합니다. 2. 보안 업데이트를 적용합니다. 3. Apache를 다시 시작하십시오. 4. 수정을 확인하십시오. 5. 보안 기능을 활성화합니다.

Linux에서 Nginx를 시작하는 방법 Linux에서 Nginx를 시작하는 방법 Apr 14, 2025 pm 12:51 PM

Linux에서 Nginx를 시작하는 단계 : Nginx가 설치되어 있는지 확인하십시오. systemctl start nginx를 사용하여 nginx 서비스를 시작하십시오. SystemCTL을 사용하여 NGINX를 사용하여 시스템 시작시 NGINX의 자동 시작을 활성화하십시오. SystemCTL 상태 nginx를 사용하여 시작이 성공했는지 확인하십시오. 기본 환영 페이지를 보려면 웹 브라우저의 http : // localhost를 방문하십시오.

See all articles