make시 링크 오류
안녕하세요
CGNS라는 정적라이브러리와 또 같이 제공되는 tool들을 소스로부터 같이 설치하려고 합니다.
tool을 빌드하기 위해서 tcl, tk, hdf5, zlib 등을 설치했고요.
library 부분은 configure 및 make에 문제가 없었는데, tool과 cgnstools을 make test하니 아래와 같은 오류가 발생하였습니다.
make test
cd tests && make test
make[1]: Entering directory `/home/dokeun/Downloads/cgnslib_3.1.4/src/tests'
gcc -g -O2 -I.. -o cgioc cgioc.c ../lib/libcgns.a /usr/lib/libhdf5.a /usr/local/lib/libz.a -L/usr/lib -l -lm
/usr/bin/ld: cannot find -l-lm
collect2: ld returned 1 exit status
make[1]: *** [cgioc] Error 1
make[1]: Leaving directory `/home/dokeun/Downloads/cgnslib_3.1.4/src/tests'
make: [runtests] Error 2 (ignored)
-l -lm 옵션 뒤에 library나 다른 directory등이 빠진것 같아 보이는데 문제 해결을 위해 어디부터 살펴봐야 하나요?
혹시 이 문제가 이전에 해결한 다른 문제로 기인 한 것일 수도 있어서 아래에 적어놨습니다.
1. configure 관련 오류
-------------------------------------------------------------------------------
configure: error: tclConfig.sh not found in /usr/lib/tcl8.5/unix 오류
->configure.in와 confgiure.sh에서 '/unix'를 삭제
2. make 관련 오류
-------------------------------------------------------------------------------
H5public.h의 57번째줄에서 include mpi.h에서 에러 발생
/usr/include/H5public.h:57:20: fatal error: mpi.h: No such file or directory
compilation terminated.
-> 를 로 수정 (mpi.h가 /usr/include/mpi에 있음)
-------------------------------------------------------------------------------
gcc: error: /usr/include/libz.a: No such file or directory
libz.a가 없음
->http://www.zlib.net/에서 zlib-1.2.8를 다운받아 ./confgiure, make install로 설치함
-------------------------------------------------------------------------------
libz.a를 찾지 못함
gcc: error: /usr/include/libz.a: No such file or directory
whereis libz.a
libz: /usr/local/lib/libz.a /usr/local/lib/libz.so
cgnslib_3.1.4/src/make.defs의 아래 문구를
ZLIBLIB = /usr/include/libz.a
ZLIBLIB = /usr/local/lib/libz.a로 수정
-------------------------------------------------------------------------------
혹시 우매한 질문이더라도 잘 부탁 드립니다. 리눅스 어제 저녁부터 시작했습니다;;
읽어주셔서 감사합니다.
자가 답변
결론적으로 CGNS library를 위해 미리 인스톨되어있어야 하는 라이브러리들의 빌드 방법, 설치 위치등에 문제가 있었습니다.
상당부분 아래 사이트를 참조했고요
http://kanedaq.blog24.fc2.com/blog-entry-7.html
사용하려는 application도 같이 설치 된것 같습니다.
아직 실행은 잘 안되는것 같은데 퇴근 후 추가적으로 나름 정리한 해결 메뉴얼을 올리도록 하겠습니다.
해결방법 정리
리눅스를 4번 다시 깔고 결과 얻었습니다.
시커먼 초보이다 보니 라이브러리하나만 잘못 깔아도 밀었다 깔기를 반복하게 되네요.
밑에 내용은 깔았다 지웠다를 눈물로 반복하며 혼자 정리해 본 내용입니다.
CGNS library build 전 필요 사항
NOTE: Linux에서의 프로그램/라이브러리 설치 방법은 다양하다. 필요에 따라 Ubuntu Software Center, apt-get명령, Synaptic Package Manager를 사용하였다.
NOTE:CGNS에서 제시된 필요 라이브러리 이외에도 cmake-gui 실행 과정에서 x11, opengl등의 추가적인 라이브러리등을 필요로 하므로 설치가 필요하다.
1. cmake-gui설치
Ubuntu Software Center에서 cmake-gt-gui 설치
2. libx11-dev, libxmu-dev설치
(cmake에서 build cgnstools 선택 후 Configure시 에러 발생)
Synaptic Package Manager에서 libx11-dev, libxmu-dev 검색 후 설치
->나의 경우 설치 위치는 /usr/lib/x86_64-linux-gnu
3. OpenGL 설치
(cmake에서 build cgnstools 선택 후 Configure시 에러 발생)
터미널 synaptic package manager에서 팩키지 설치
설치할 항목들 libgl1-mesa-dev, libglu1-mesa-dev, mesa-common-dev (synaptic에서 dependency 관련 에러 나면 Reload 실행 후 재 시도)
->나의 경우 설치 위치는 /usr/lib/x86_64-linux-gnu/
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install mesa-common-dev
(참조: http://ubuntuforums.org/showthread.php?t=729335)
4. szip, zlib, HDF5, tcl/tk설치
NOTE:설치할 라이브러리들은 정해진 기본 폴더에 설치되지만 szip, zlib, HDF5은 /opt/hdf5-1.8.10-patch1에 아래 3개 라이브러리를 설치함
NOTE:tcl/tk는 /opt/tcl8.6.0 에 tcl8.6.0 및 tk8.6.0 설치
5. szip 컴파일 및 설치
설치파일: zlib128.zip
http://zlib.net 에서 받음
원본 폴더(나의 경우 Downaloads/szip-2.1)로 이동 후 아래 내용 수행
cd /Downloads/szip-2.1
./configure –prefix=/opt/hdf5-1.8.10-patch1
make
make check
sudo make install
6. zlib 컴파일 및 설치
설치파일: szip-2.1.tar.gz
http://www.hdfgroup.org/ftp/lib-external/szip/2.1/src 에서 받음
원본 폴더(나의 경우 Downaloads/zlib-1.2.8)로 이동 후 아래 내용 수행
cd /Downloads/zlib-1.2.8
./configure –prefix=/opt/hdf5-1.8.10-patch1
make
make check
sudo make install
7. HDF5 컴파일 및 설치
설치파일:hdf5-1.8.10-patch1.tar.gz
http://www.hdfgroup.org/ftp/HDF5/current/src 에서 받음
원본 폴더(나의 경우 Downaloads/hdf5-1.8.10-patch1)로 이동 후 아래 내용 수행
cd /Downloads/hdf5-1.8.10-patch1
./configure –prefix=/opt/hdf5-1.8.10-patch1 --with-zlib=/opt/hdf5-1.8.10-patch1 --with-szlib=/opt/hdf5-1.8.10-patch1
make
make check
sudo make install
Make 시 C++ 관련 에러나면 sudo apt-get install build-essential이후 재시도
수많은 warning을 토함...cannot optimize loop
tcl/tk 컴파일 및 설치
설치파일:tcl8.6.0-src.tar.gz, tk8.6.0-src.tar.gz
http://www.tcl.tk/software/tcltk/download.html 에서 받음
원본 폴더(나의 경우 Downaloads/tcl8.6.0)로 이동 후 아래 내용 수행
cd /Downloads/tcl8.6.0/unix
./configure –prefix=/opt/tcl8.6.0
make
make check
sudo make install
cd /Downloads/tk8.6.0/unix
./configure –prefix=/opt/tcl8.6.0
make
make check
sudo make install
Make하면 warning 토함...
심볼링크 생성 해도 되고 안해도 되고...
위에서 설치한 라이브러리 디렉토리에 대한 심볼링크 생성
긴 물리적 주소를 짧은 주소로 대신 사용 가능
cd /opt
sudo ln -s hdf5-1.8.10-patch1 hdf5
sudo ln -s tcl8.6.0 tcl
8. cmake-gui에서 generate 실행
Where is the source code:와 Where to build the binaries: 에 각각 압축을 풀은 폴더와 작업할 디렉토리(설치 디렉토리 아님) 입력 후 Configure설정버튼을 눌러 열리는 대화창은 디폴트로하여 Finish 버튼 누름.
BUILD_CGNSTOOLS, CMAKE_INSTALL_PREFIX, ENABLE_64BIT, ENABLE_FORTRAN ENABLE_HDF5를 아래와 같이 설정후 다시 Configure 누르면 아래와 같이 추가 지정 항목이 발생
발생한 추가항목은 아래와 같이 설정
cmake시 사용한 include, library 위치들...
/opt/cgnslib_3.1.4
/opt/hdf5-1.8.10-patch1/include
/opt/hdf5-1.8.10-patch1/lib/libhdf5.a
/opt/tcl8.6.0/include
/opt/tcl8.6.0/lib/libtcl8.6.so
/opt/tcl8.6.0/include
/opt/tcl8.6.0/lib/libtk8.6.so
/opt/hdf5-1.8.10-patch1/lib/libsz.so
/opt/hdf5-1.8.10-patch1/lib/libz.so
/usr/lib/x86_64-linux-gnu/libXmu.so
cmake시 opengl관련 에러 발생 시 path
/usr/lib/x86_64-linux-gnu/
마지막으로 추가항목을 아래 그림과 같이 설정 후 Configure, Generate를 각각 실행
9. make
Build directory로 이동 후 make, make install 수행
심볼링크 생성(옵션)
cd /Downloads/build
make
sudo make install
cd /opt
sudo ln -s cgnslib_3.1.4 cgns
8.결과
/opt/cgns에 include, library, bin/cgnstools 확인
코딩에 사용될 헤더와 라이브러리 확인 후 cgns/bin$ ./cgnsview 실행
감격의 눈물 ㅜㅜ
댓글 달기