오늘은 맑음

swig로 python에서 c function 호출하기 본문

Language/Python

swig로 python에서 c function 호출하기

자전거 타는 구구 2017. 12. 8. 20:54
반응형

swig를 이용하여 python에서 c모듈 호출하기

프로그램 구조

  • func.c : 함수들을 모아놓은 c 소스파일
  • func.i : 이 파일을 이용하여 swig로 wrap파일을 생성해준다.
  • main.py : 파이썬 프로그램이며 func.c에 있는 함수들을 호출한다.
 
makefile
 
_func.so : func.c func_wrap.c func.o func_wrap.o func.i
ld -shared func.o func_wrap.o -o _func.so
 
func_wrap.c : func.i 
swig -python func.i
 
func.o func_wrap.o : func.c func_wrap.o 
gcc -fPIC -c func.c func_wrap.c -I/usr/include/python2.7
 
clean :
@rm -rf *.o *.so *_wrap.c func.py
 
 
가장 먼저 실행될 명령어는 func_wrap.c를 생성하는 명령어이다. 
swig -python func.i 명령어를 이용하여 func_wrap.c파일을 생성한다.
 
 그 다음은 오브젝트 파일 생성이다. 
 -fPIC옵션을 이용하여 공유라이브러리에서도 가능하게 만들어준다.
  또한 -I/usr/include/python2.7 디렉터리에서 python.h파일을 사용한다.
 
 오브젝트 파일이 모두 생성되면 모듈생성이 시작이 된다. 
 모듈의 이름은 _로 시작되며 c파일과 이름이 같아야 한다. 또한 확장자는 .so가 되야한다. 따라서 _func.so파일이 생성된다. shared옵션을 사용하여 공유라이브러리를 가장 먼저 사용하게 해준다.
 
make명령어를 입력하게 되면 _fun.so파일이 생성되며 python main.py명령어를 이용해서 실행시켜주게 되면 main에서 불러온 함수들이 동작을 하게 될 것이다. 
 
 
 

 

반응형
Comments