컴파일 옵션 -L 에 대하여.(기초적인 질문)
글쓴이: blueski / 작성시간: 월, 2004/09/13 - 5:01오후
우선 다움과 같은 코드를 만들었습니다. 화일 이름은 test.c 입니다.
#include <stdio.h> int main() { printf("test \n"); return 0; }
이렇게 한 후에 gcc test.c 하였더니 a.out 이라는 실행 화일이 만들어 졌습니다.
ldd a.out 하였더니 다음과 같은 결과과 나왔습니다.
Quote:
libc.so.6 => /lib/libc.so.6 (0x40021000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
위의 해당 라이브러리를 다른 /tmp/lib 라는 디렉토리에 복사를 하였습니다.
그런다음 다시 컴파일을 하였습니다.
gcc -L/tmp/lib test.c
그런데 이렇게 하여도 ldd a.out 한 결과가 위와 같았습니다.
즉, 라이브러리를 /tmp/lib 에서 찾은게 아니라 그대로 /lib 에서 찾았다는 말이죠.
왜 그렇죠?
-L 옵션이 라이브러리의 디렉토리 변화시키는거 아닌가요?
너무 기초적인 질문인가요? TT
Forums:
ldd는 실행파일의 so 목록을 LD_LIBRARY_PATH 에서 찾습니
ldd는 실행파일의 so 목록을 LD_LIBRARY_PATH 에서 찾습니다.
static 링크를 할려면 -static 옵션을 주셔요.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
[quote="IsExist"]ldd는 실행파일의 so 목록을 LD_LI
echo $LD_LIBRARY_PATH 를 하면 아무것도 안 나오거든요.
즉, 해당 변수는 지정되지 않은 상태인듯 합니다.
[quote="blueski"][quote="IsExist"]ldd는 실
ld.so.conf에 지정된데서 맨처음 찾습니다
여기서 못찾으면 그 환경변수에 지정된거 찾고
[quote="Anonymous"][quote="blueski"][quo
/etc/ld.so.conf 화일을 보면
/usr/X11R6/lib
만 있거든요.
게다가 위에서 말씀드린대로 $LD_LIBRARY_PATH 에는 아무것도 지정되어 있지 않고...
제 생각엔 기본적으로 /lib, /usr/lib 를 먼저 찾는것 같거든요.
그렇다면 /lib 디렉토리에 있는 라이브러리를 임의의 다른 디렉토리에 이동시켜서 그 위치를 컴파일시에 지정하여 사용하게 할수 없는가가 제 질문입니다.
제가 알기론 ld에서는 시스템의 기본 lib path를 찾아보고 사용자
제가 알기론 ld에서는 시스템의 기본 lib path를 찾아보고 사용자 path를 찾는다고
알고 있습니다.
즉, 해당되는 라이브러리는 시스템 기본 라이브러리이므로 사용자가 다른 디렉토리에
복사를하고 지정을해도 시스템에 있는 기본 라이브러리로 적용된다고 생각합니다.
혹시 모르니 -L/tmp/lib보다는 -l/tmp/lib/libc.so.6 으로 한번 도전해보시죠.
(안될 수도 있겠지만... :oops: )
P.S. : 프로그램관련 질문이라 게시판을 옮겼습니다.
------------------------------
좋은 하루 되세요.
댓글 달기