반응형
Python에서 사용 가능한 C언어 함수를 만들기 전에 먼저 선행되어야 하는 것이 있습니다. 바로 환경 구성과 배경 지식입니다. 아래는 환경 구성과 GCC 개념 관련 글입니다.
기초 개념
WSL을 사용한 개발 환경 구축
2023.08.31 - [Tools] - Visual Studio Code, WSL2, GCC를 이용한 C언어 개발 환경 구축하기
Windows Powershell에서 개발 환경 구축(MinGW 이용)
2023.09.01 - [Tools] - Visual Studio Code에서 Powrshell에 MinGW-w64와 MSYS2를 사용해 GCC 설치하기
GCC란?
2023.03.13 - [SystemSecurity/System Security Concepts] - [008] GCC 컴파일러란 무엇일까? GCC 컴파일러와 파일 확장자
C언어 동적 라이브러리
https://blueamor.tistory.com/707
C언어 함수 작성
가장 먼저 간단한 C언어 함수를 작성하겠습니다. 아래는 int형으로 a와 b의 인자를 받아와 두 변수의 값을 더해 반환하는 함수입니다.
// example.c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
GCC 사용해 동적 라이브러리(.so 파일) 생성 - DLL도 가능
$ gcc -shared -o example.so -fPIC example.c
- 동적 라이브러리의 경우 라이브러리를 교체하는 것만으로도 변경이 가능합니다.
- .o는 목적 파일, 2진수로 이루어진 기계어 코드
- -fPIC은 Position-Independent Code의 약자로 example.o 파일을 동적 라이브러리로 사용하도록 하는 컴파일 옵션
- 해당 명령을 실행하면 "example.so" 파일이 생성됩니다.
python에서 ctypes를 이용해 라이브러리 불러오기
Python 스크립트에서 ctypes 모듈을 사용하여 C 라이브러리를 불러올 수 있습니다.
import ctypes
# 라이브러리 불러오기
example = ctypes.CDLL('./example.so')
# C 함수 호출
result = example.add(10, 20)
# 결과 출력
print("결과:", result)
python 스크립트 실행
이제 Python VS Code 또는 터미널에서 python 스크립트를 실행하면 10과 20을 더한 30이 출력됩니다.
마무리
Python의 쉽고 빠르며 뛰어난 확장성을 가졌다는 장점과 동시에 C언어의 빠른 성능을 챙겨보아요~
반응형