리눅스 라이브러리 설치 어렵네요...도움 부탁드립니다..
리눅스 개초보입니다. 사용중인 리눅스는 redhat-release-5Server-5.10.0.4 입니다.
학교에서 계정을 받은것이고, 저는 관리자권한이 없어서 제 계정안에서만 라이브러리설치나 기타 설정만 가능하다고 합니다.
CFITSIO 라는 라이브러리를 설치를 하려고합니다. 아래사이트 참조..
http://heasarc.gsfc.nasa.gov/docs/software/fitsio/quick/quick.html
메뉴얼대로 쭉 따라했습니다.
1. ./configure --prefix=/home/****/usr1/local <----제 계정아래(**** 은 제 user ID)의 /usr1/local 에 다가 경로지정
2. > make (or 'make shared')
> make install (this step is optional) 다진행후 특별한 에러메세지는 없었습니다.
이러니깐 /usr1/local 이란 곳에 include lib 이라는 디렉토리가 생성되었고요..
include 디렉토리에는 drvrsmem.h fitsio.h fitsio2.h longnam.h 파일들이 생겼습니다.
lib 디렉토리에는 libcfitsio.a pkgconfig(디렉토리) 이런게 생겼습니다. pkgconfig(디렉토리) 안에는 cfitsio.pc 가 있네요.
그리고 메뉴얼에 example program 돌려보라고 해서...그대로 따라 하고...자세한 코드는 아래..
( http://heasarc.gsfc.nasa.gov/docs/software/fitsio/quick/node4.html )
test.c
1 #include
2 #include
3 #include "fitsio.h"
4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
gcc test.c -o test -lcfitsio 라고 쳤더니....
*******************
cfitsio.c:3:24: error: fitsio.h: No such file or directory
cfitsio.c: In function 'main':
cfitsio.c:7: error: 'fitsfile' undeclared (first use in this function)
cfitsio.c:7: error: (Each undeclared identifier is reported only once
cfitsio.c:7: error: for each function it appears in.)
cfitsio.c:7: error: 'fptr' undeclared (first use in this function)
cfitsio.c:8: error: 'FLEN_CARD' undeclared (first use in this function)
cfitsio.c:11: error: 'READONLY' undeclared (first use in this function)
***************
라고 뜨더군요...
그래서...인터넷 찾아보니 라이브러리 경로를 지정해야한다고 해서..
제 계정 디렉토리 바로 아래에 .bash_profile 란 파일을 만들어서
======================================================
1 LD_LIBRARY_PATH=/home/****/usr1/local/include
2 LD_LIBRARY_PATH=/home/****/usr1/local/lib
3
4 export LD_LIBRARY_PATH
======================================================
라고 입력후 저장, 그리고 source .bash_profile 도 함....
그리고 test.c에서
3 #include "fitsio.h" 을 < fitsio.h > 로 변경...
다시 gcc test.c -o test -lcfitsio 라고 쳤더니....위와 똑같은 에러메시지 발생(차이가 없음)
그래서...#include "fitsio.h" 으로 원래대로 바꿈(따옴표 형태로)
그리고 /usr1/local/include/ 에 있는 fitsio.h 와 longnam.h 을
test.c 가 있는 디렉토리로 복사후...
다시 gcc test.c -o test -lcfitsio 라고 입력, 그랬더니 아래처럼 메세지 뜸....
*****************
-bash-3.2$ gcc cfitsio.c -o cfitsio -lm -lcfitsio
/usr/bin/ld: cannot find -lcfitsio
collect2: ld returned 1 exit status
***********
인터넷 찾아보니 이런 메세지는 라이브러리가 설치안되었을때 발생한다던데...
여기서 막혀서 아무것도 진행이안됩니다 -_-;;;
개초보라...도움이 필요합니다....ㅠ
일일히 xxx.h 파일 복사안하고....라이브러리 쓸수있게 하고싶습니다...
어케해야하나요...ㅠ
gcc
이렇게 컴파일하세요..
LD_LIBRARY_PATH 는 현재는 필요없어보이네요. (런타임라이브러리 패스)
오 되네요...감사합니다..
매번 이렇게 입력해야 하나요?? 좀더 편리하게 할 방법이 없는건가요?
LIBRARY_PATH, C_INCLUDE_PATH
LIBRARY_PATH, C_INCLUDE_PATH 등을 쓰면 됩니다. gcc manual에 자세히 나와 있습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
와우...감사합니다...
완전 좋은 자료네요..^^ 열공하겠습니다.
그래서 make 를 씁니다.현재 디렉토리에 아래와
그래서 make 를 씁니다.
현재 디렉토리에 아래와 같은 makefile을 만들고,
make cfitsio 라고 해보심.. ( cfitsio.c 를 컴파일해서 cfitsio 를 만드는 경우 )
신기하네요 ㅋ
훨씬 간단해졌습니다......이쪽 복습을 좀더 해야겠네요 ㅋㅋ 정말 감사합니다...
댓글 달기