lib 를 개인홈에 두고 컴파일하고 싶은데요.
글쓴이: nephro / 작성시간: 목, 2004/03/04 - 6:16오후
먼저, 제가 하고싶은일을, 간단한 C 프로그램을 php로 실행시켜 그림파일을 thumbnamil로 바꾸기 입니다.
그래서 C 로 프로그램을 짰는데, Imlib2 라는 lib 가 필요한 프로그램 입니다.
제 시스템(데비안 우디)에서는 Imlib2가 깔려있어서 아무런 문제없이 웹상에서 프로그램이 실행되는데, 웹호스팅을 받고 있는 제 홈페이지에서는 lib가 없다며
실행이 안되는 군요.
그래서, 홈페이지 계정안에 lib directory를 만들고 libImlib2.* 파일을 이곳에 복사하였습니다.
그다음에, 컴파일할때 라이브러리 위치를 알려주면 해결될것 같아서,
gcc -Wall -ggdb -L/home1/user/lib -o pic2thumb pic2thumb.c -lImlib2
하였는데, 작동을 안하네요. 여전히 lib가 없다는 말만 나오는군요.
어떡하면 해결할수 있을까요?
가르쳐 주세요.
감사합니다. :oops:
Forums:
우선 static library(예를 들면, imlib2.a)가 있는지를
우선 static library(예를 들면, imlib2.a)가 있는지를 먼저 확인을 해 보셔야 할 것 같습니다. 만약, 공유 library 형태(예를 들면 imlib2.so)라면 compile을 하더라도 imlib2 library가 실행파일 안에 들어가지 않을 수가 있습니다. 공유 library라면 imlib2를 모두 갖다 놓고, LD_LIBRARY_PATH에 해당 공유 library가 있는 디렉토리를 추가해 주셔야 할 것 같습니다.
허접한 답변이었습니다.
...
감사합니다. 하나만 더...
답변 감사합니다.
확인해 보니, .a 와 .so 가 모두 있습니다. 위에 언급한 바와 같이 컴파일 하고 실행시키면, .so가 없다는 메시지가 뜹니다.
컴파일할때 static library를 포함시켜 컴파일하는 방법좀 가르켜 주세요.
실은 전공이 컴퓨터랑 전혀 관련 없어, 책과 인터넷으로 언어를 독학해서, 기초가 약하답니다.
감사합니다.
자유를 꿈꾸는자 고개를 들어 하늘을 보라.
[quote="nephro"]확인해 보니, .a 와 .so 가 모두
gcc -Wall -ggdb -L/home1/user/lib -o pic2thumb pic2thumb.c -lImlib2
대신
gcc -Wall -ggdb -o pic2thumb pic2thumb.c /home1/user/lib/libImlib2.a
처럼 해 주시면 될 것 같습니다.
gcc는 소스 파일이 아닌 파일 이름이 명령행에 나타나면 그 파일을 링커로
넘겨줍니다.
--feanor
[quote]gcc -Wall -ggdb -o pic2thumb pic2
답변 감사합니다.
가르쳐 주신대로 했는데, 에러메시지가 난무해서, 오히려 제가 죄송스럽습니다.
에러메시지는 다음과 같습니다.
shared library로 컴파일할때는 에러가 안나는데, static library를 포함시키면
에러가 나는 이유가, 제 생각에는 static lib. 내부의 함수들이 다른 lib.들을 필요로 하기 때문이 아닐까요?
그렇다면, header file들을 좀 손봐야 할까요?
음... 산넘어 산이로군요.
자유를 꿈꾸는자 고개를 들어 하늘을 보라.
imlib2 가 의존하는 라이브러리들 중 설치되지 않은 녀석들이 있는 것
imlib2 가 의존하는 라이브러리들 중 설치되지 않은 녀석들이 있는 것 같습니다.
확인하셔서 설치해주셔야 할 것 같네요.
imlib2.so 나 imlib2.a 를 ldd로 보시면 어떤 결과가 나오나요?
----
Let's shut up and code.
statc linking을 강제할 때 명령행에 .a 파일의 경로를 직접
statc linking을 강제할 때 명령행에 .a 파일의 경로를 직접 적어주는 것에는 분명 문제가 없습니다. Imlib2가 왜 에러를 내는지는 잘 모르겠지만 -lX11 같은 것이 필요할 것 같기도 합니다.
--feanor
감사합니다.
감사합니다.
결과는 다음과 같습니다.
자유를 꿈꾸는자 고개를 들어 하늘을 보라.
자꾸 질문해서 죄송합니다.
결국 static lib.를 포함하여 compile하는데 실패하였습니다.
Imlib2 source를 참고하여 이것 저것 해 보았는데 안되었습니다. 그래서,
공유 lib.를 홈페이지에 갖다놓고 사용하는 방법을 이용하고 싶은데, 님의 말씀을 잘 이해하지 못하겠습니다. 좀 더 풀어서 설명해 주시겠습니까?
감사합니다.
자유를 꿈꾸는자 고개를 들어 하늘을 보라.
Re: 자꾸 질문해서 죄송합니다.
공유 lib.를 홈디렉토리에 갖다놓고 아래 명령을 실행하세요
(본셀이고 홈디렉토리가 /home/My 일 경우 )
export LD_LIBRARY_PATH=/home/My
Re: 자꾸 질문해서 죄송합니다.
감사합니다.
프로그램이 잘 작동됩니다. 몇가지 문제점이 추가로 발견되었는데, 열심히 삽질해 보겠습니다. 감사합니다.
자유를 꿈꾸는자 고개를 들어 하늘을 보라.
댓글 달기