settingsLogin | Registersettings
리눅스 관련 모든 질문답변을 올려주세요! 100% 무료입니다! -Ask Ubuntu KR
Show Menu

리눅스 공유 라이브러리 제작 질문입니다.

1 좋아함 0 싫어요
SDL에 기반한 공유 라이브러리 제작중에 있습니다. 아래와 같은 스크립트를 만들어 공유라이브러리를 빌드하여 사용하고 있는데, SDL에 비 의존적 코드는 잘 작동하지만, SDL을 포함하면, SDL.h: No such file or directory와 같은 에러를 뱉어냅니다...

궁금한 점은 다음과 같습니다. 공유 라이브러리를 만드는 방법은 웹에 나와 있고, 만들어서 작동함을 확인해 보았습니다. 다만, 공유라이브러리를 포함하는 공유라이브러리를 만드는 방법에 대해 정보가 없습니다. 혹시 아시는 고수님들께서 도와주시면 감사하겠습니다.

 

#!/bin/sh

SRC_PATH="../src"
DEST_PATH="build"

SONAME=libcpt.so.1
TARGET=libcpt.so.1.0.1

#SRC=
OBJ="cpt.o cpt_main.o cpt_page.o cpt_text.o cpt_list.o"

CFLAGS=`pkg-config --cflags sdl2`
LDFALGS=`pkg-config --libs sdl2`
COMPILE="gcc -fPIC $CFLAGS -g -c"
LINK="gcc -shared -Wl,-soname,"$SONAME" -o"

rm -rf build
mkdir build
cd build

$COMPILE                 \
    $SRC_PATH/cpt.c            \
    $SRC_PATH/cpt_main.c         \
    $SRC_PATH/cpt_page.c         \
    $SRC_PATH/cpt_text.c         \
    $SRC_PATH/cpt_list.c

$LINK $TARGET $OBJ $LDFALGS
문의 2015 9월 30 개발 hedone21
  

1 답변

0 좋아요 0 싫어요
 
우수 답변
자문자답하게 되네요.

결론부터 말하자면 빌드시에 -I 옵션을 줘서 의존하는 라이브러리의 헤더파일의 위치를 명시해 주면 됩니다. 만약 제 라이브러리가 SDL에 의존한다면 라이브러리 빌드시에 -I/usr/lib/libSDL2 이런식으로 명시해 주면 해결됩니다.
답변됨 2015 10월 6 hedone21
Hosting by Microsoft MeltingPot/maru intermet
...