리눅스에서 소스코드로 라이브러리 설치 질문입니다
CERN Program Library(http://wwwasd.web.cern.ch/wwwasd/cernlib/) 라는 것을 yum이 아닌 소스코드를 이용해 설치하려고 합니다. 그중에서도 특히 GEANT3를 사용하려고 하는데요.
설치를 하려고 아무리 시도해봐도 답이 안나와서 질문글 올립니다
제가 설치한 방법은 아래와 같습니다
일단 사용한 OS는 Scientific Linux Cern 32bit 5.9버전 (http://linux.web.cern.ch/linux/scientific5/) 입니다. 레드햇 기반으로 cern library 사용에 맞
먼저 http://cernlib.web.cern.ch/cernlib/version.html 에서 2006버전 소스코드를 다운 받았습니다 (compressed tar files에서 2006_src.tar.gz, 2006_include.tar.gz)
그다음 설치하려는 디렉토리에 압축을 풀고 (저같은 경우 /root/geant3 라는 디렉토리를 생성했습니다)
홈페이지의 install 부분에 나온 설명처럼 (http://cernlib.web.cern.ch/cernlib/install/install.html)
쉘 스크립트를 실행했습니다 (http://cernlib.web.cern.ch/cernlib/install/start_cern , http://cernlib.web.cern.ch/cernlib/install/rebuild)
그런데 설치후에 geant3의 examples 폴더에서 make를 해보면 이러한 에러가 납니다.
making Makefiles in /geant321/examples/gexam1...
making Makefiles in /geant321/examples/gexam2...
making Makefiles in /geant321/examples/gexam3...
making Makefiles in /geant321/examples/gexam4...
making Makefiles in /geant321/examples/gexam5...
testing in /geant321/examples/gexam1...
gmake[1]: execvp: cernlib: Permission denied
gmake[1]: Entering directory `/root/geant3/2006/build/geant321/examples/gexam1'
rm -f gukine.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o gukine.o /root/geant3/2006/src/geant321/examples/gexam1/gukine.F
rm -f guout.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o guout.o /root/geant3/2006/src/geant321/examples/gexam1/guout.F
rm -f gustep.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o gustep.o /root/geant3/2006/src/geant321/examples/gexam1/gustep.F
rm -f gutrev.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o gutrev.o /root/geant3/2006/src/geant321/examples/gexam1/gutrev.F
rm -f main.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o main.o /root/geant3/2006/src/geant321/examples/gexam1/main.F
rm -f ufiles.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o ufiles.o /root/geant3/2006/src/geant321/examples/gexam1/ufiles.F
rm -f ugeom.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o ugeom.o /root/geant3/2006/src/geant321/examples/gexam1/ugeom.F
rm -f uginit.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o uginit.o /root/geant3/2006/src/geant321/examples/gexam1/uginit.F
rm -f uglast.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o uglast.o /root/geant3/2006/src/geant321/examples/gexam1/uglast.F
rm -f uhinit.o
g77 -c -O -fno-automatic -fno-second-underscore -fugly-complex -I/root/geant3/2006/build/geant321 -I/root/geant3/2006/src/geant321 -I/root/geant3/2006/src/geant321/examples/gexam1 -I/root/geant3/2006/src/include -DCERNLIB_LINUX -DCERNLIB_UNIX -DCERNLIB_LNX -DCERNLIB_QMGLIBC -o uhinit.o /root/geant3/2006/src/geant321/examples/gexam1/uhinit.F
rm -f exam1
Linking with cern libraries
gmake[1]: execvp: cernlib: Permission denied
gmake[1]: *** [exam1] Error 127
gmake[1]: Leaving directory `/root/geant3/2006/build/geant321/examples/gexam1'
make: *** [test] Error 2
cernlib자체가 제대로 설치되지 않은 것일까요?
혹시 경험이 있으신분이나 이런 빌드 경험이 있으신분들 조언을 부탁드립니다
permission 문제라면
make -n 을 실행해보시고 어떤 명령에서 오류가 발생하는지 확인해보세요.
라이브러리를 생성하고 예제 실행 파일을 실행하다 실패하는 것으로 보이는데요.
오류 메시지처럼 예제 실행파일 경로 상에 permission 문제가 있지 않을까 싶은데요.
님이 슈퍼 유저로 make 명령을 실행하지 않았다면 그 가능성은 더욱 커질테구요(하지만 소스 디렉토리 경로로 보건데 root로 실행하신 것 같네요).
예제 실행 파일 경로에 스페이스가 포함되었는지도 확인해보세요.
답글 감사합니다
답글달아주셔서 정말 감사합니다
말씀해주신 대로 make -n을 통해 확인해봤습니다
먼저 슈퍼유저는 시도해봤습니다만 결과가 똑같았습니다
설치 디렉토리에있는 파일들을 chmod로 권한도 바꿔봤습니다만 똑같은 문제가 발생했습니다
/root/geant3/2006/build/geant321에서의 make -n 결과는 아래 메세지에서 멈추고
making all in /geant321/examples...
gmake[1]: Entering directory `/root/geant3/2006/build/geant321/examples'
gmake[1]: *** No rule to make target `all'. Stop.
gmake[1]: Leaving directory `/root/geant3/2006/build/geant321/examples'
make: *** [all] Error 2
/root/geant3/2006/build/geant321/examples에서의 make -n 결과는 아래 메세지가 무한 반복됩니다
case '' in *[ik]*) set +e;; esac; \
case '' in -*n*) executeit="no";; esac; \
i=`dirname gexam1/Makefile`; \
case "/geant321/examples" in \
.) curdir= ;; \
*) curdir=/geant321/examples/ ;; \
esac; \
echo "making Makefiles in $curdir$i..."; \
itmp="$i" \
curtmp="/geant321/examples" \
toptmp=""; \
case "$itmp" in \
../?*) \
while echo "$itmp" | grep '^../' > /dev/null;\
do \
toptmp="/`basename $curtmp`$toptmp"; \
curtmp="`dirname $curtmp`"; \
itmp="`echo $itmp | sed 's;../;;'`"; \
done \
;; \
esac; \
case "$itmp" in \
*/?*/?*/?*/?*) newtop=../../../../..;; \
*/?*/?*/?*) newtop=../../../..;; \
*/?*/?*) newtop=../../..;; \
*/?*) newtop=../..;; \
*) newtop=..;; \
esac; \
newtop="$newtop$toptmp"; \
case "/root/geant3/2006/build" in \
/?*) imaketop=/root/geant3/2006/build \
imakeprefix= ;; \
.) imaketop=$newtop \
imakeprefix=$newtop/ ;; \
*) imaketop=$newtop//root/geant3/2006/build \
imakeprefix=$newtop/ ;; \
esac; \
if [ ! -d $i ]; then \
mkdirhier $i; \
fi; \
cd $i; \
rm -f Makefile.bak; \
if [ -f Makefile ]; then \
true; \
else \
for imakedir in $newtop /root/geant3/2006/src/geant321/examples; do \
imakefile=`echo $imakedir/$i/Imakefile | \
sed -e 's://:/:'`; \
if [ -f $imakefile ]; then break;fi; \
done; \
if [ ! -f $imakefile ]; then \
echo "No Imakefile found --> exit"; \
exit 1; \
fi; \
if [ "$executeit" != "no" ]; then \
imake -DUseInstalled -DLocalTop= -I/root/geant3/2006/src/config -DTOPDIR=$imaketop \
-DCURDIR=$curdir$i \
-DPackageTop=/geant321 \
-DPackageName=geant321 \
-f $imakefile; \
fi; \
fi;
그런데 저는 이걸 봐서는 어떤부분을 고쳐야 할지 잘 모르겠습니다... 어떻게 해야할지 알려주실수있을까요?
..
댓글 위치를 잘못 달았는데 이거 지우는게 안되네요.
호기심에 geant3 라는 패키지가 무엇인지
호기심에 geant3 라는 패키지가 무엇인지 검색해보니 입자 물리 계산에 쓰이는 프로그램으로 보이더군요. 내심 엄청 반갑다는 생각을 했습니다. 이론 물리 전공은 아니지만...
start_cern 실행 중에 상당수 오류가 발생하였지만 해당 오류는 없었고.
rebuild 스크립트 실행 중...
/2006/src/build/packlib$ make test를 실행하는 와중에
execvp: cernlib: Permission denied
오류가 뜨더군요.
그래서 /2006/src/new/bin/cernlib 파일을 찾아보니
-rw------- 1 kyle users 8721 Mar 1 19:18 cernlib
퍼미션이 rw로만 되어 있습니다.
cernlib 파일 퍼미션을 실행 가능(일반적으로 755면 되지 않을까요?)하도록 바꿔주면 됩니다.
답글 감사합니다
답글 감사합니다
한동안 답변이 올라오지않아서 좌절하고 있었습니다 ㅠㅠ
그런데 말씀하신 cernlib 퍼미션을 바꿨는데도 제 컴퓨터에서는 실행이 되지 않습니다
저는 /cern/2006/bin과 /cern/new/bin에 있는 파일들 (cernlib, gxint, kuipc, paw)의 퍼미션을 바꿨습니다
설치하신 환경과 사용하신 방법을 자세히 알려주실 수 있나요?
감사합니다
방금 일 끝나고 집에 와서 글 읽으셨는지 확인하러
방금 일 끝나고 집에 와서 글 읽으셨는지 확인하러 들어왔는데 아직이군요.
그래서 하는 김에 마저 ~/tmp/2006/src/geant321/examples/gexam1 실행파일 만드는 것까지 테스트를 해봤습니다.
일단 링크해야할 라이브러리부터 찾아보겠습니다.
cd ~/tmp/2006/src/new/lib
for i in *.a
do
echo ====== [$i]
objdump -t $i | grep hff1_
done
결과가
====== [libariadne.a]
====== [libcojets.a]
====== [libeurodec.a]
====== [libfritiof.a]
====== [libgeant.a]
====== [libgeant321.a]
====== [libgrafX11.a]
====== [libgraflib.a]
====== [libherwig.a]
====== [libherwig59.a]
====== [libisajet758.a]
00000000 *UND* 00000000 sshff1_
00000000 g F .text 000002e9 sshff1_
====== [libjetset74.a]
====== [libkernlib-shift.a]
====== [libkernlib.a]
====== [liblepto651.a]
====== [libmathlib.a]
====== [libpacklib-shift.a]
00000000 g F .text 00000270 hff1_
====== [libpacklib.a]
00000000 g F .text 00000270 hff1_
====== [libpawlib.a]
00000000 *UND* 00000000 hff1_
====== [libpdflib804.a]
====== [libphotos202.a]
====== [libphtools.a]
====== [libpythia6205.a]
이렇게 찾으면 libpacklib-shift.a와 libpawlib.a 에 해당 심볼이 정의된 것을 확인할 수 있습니다. *UND*는 undefined로 표시된 라이브러리는 hff1_ 심볼이 정의되지 않았으나 그 라이브러리에서 hff1_ 심볼을 참조한다는 것입니다.
결국 쭈욱 찾아나가니 X11 그래픽 라이브러리까지 연결되는 것 같네요.
undefined reference to XChangeWindowAttributes XSync
이거는 구글링이 더 빨라서 gtk 라이브러리가 필요하고.
undefined reference to XGetPixel
이거는 ld가 X11 라이브러리가 필요하다고 하네요.
그래서
g77 -o exam1 -O -fno-automatic -fno-second-underscore -L gukine.o guout.o gustep.o gutrev.o main.o ufiles.o ugeom.o uginit.o uglast.o uhinit.o ~/tmp/2006/src/new/lib/libgeant321.a ~/tmp/2006/src/new/lib/libpawlib.a ~/tmp/2006/src/new/lib/libgrafX11.a ~/tmp/2006/src/new/lib/libgraflib.a ~/tmp/2006/src/new/lib/libpacklib.a -lX11 -lgtk
이렇게 하면 exam1 실행 파일이 만들어지네요.
실행을 해보니 gexam1.dat가 없다고 하네요. 해당 디렉토리에 exam1.dat 파일이 있어
ln -sf exam1.dat gexam1.dat
로 링크시켜주고 실행 시켜보니...
MZSTOR. ZEBRA table base TAB(0) in /MZCC/ at adr 34309287 20B84A7 HEX
MZSTOR. Initialize Store 0 in /GCBANK/
with Store/Table at absolute adrs 34147861 34309287
HEX 2090E15 20B84A7
HEX FFFD872A 0
relative adrs -162006 0
with 1 Str. in 2 Links in 5300 Low words in 49970 words.
This store has a fence of 16 words.
MZLOGL. Set Log Level 0 for store 0
MZSTOR. Initialize Store 1 in /PAWC/
with Store/Table at absolute adrs 34228249 34237840
HEX 20A4819 20A6D90
HEX FFFEC12E FFFEE8E9
relative adrs -81618 -71447
with 1 Str. in 1 Links in 5001 Low words in 9990 words.
This store has a fence of 5 words.
MZLINK. Initialize Link Area /HCBOOK/ for Store 1 NL/NS= 49 4
1***** GEANT Version 3.21/14 Released on 19032002
0***** Correction Cradle Version 0.1400
XTERM에 상기 메시지가 뿌려지고 아무일도 일어나지 않네요.
댓글 달기