2017년 9월 22일 금요일

PostgreSQL DDD 연결 (2)

먼저 DDD 를 설치한다.

% yum install ddd

만약 성공적으로 설치되면 다행인데, 안되는 경우도 있다.

나 같은 경우는 머신을 2개를 사용중인데, 한쪽은 되는데, 다른 한쪽은 안된다.
이유를 모르겠다.
뭐 열심히 파보면 알 수도 있겠지만, 귀찮아서 그냥 말았다.

만약 안되는 경우, 소스를 사용해서 설치하는 방법에 대해 적어본다.

  • 다운로드
아래 경로에 가서 소스를 다운로드 한다.
https://centos.pkgs.org/7/puias-unsupported-x86_64/ddd-3.3.12-20.sdl7.x86_64.rpm.html

사이트에 가면 아래와 같은 항목이 있는데, 다운로드 하면된다.
Source package: ddd-3.3.12-20.sdl7.src.rpm

만약 잘 못 찾겠으면, 그냥 아래 링크를 통해 다운로드 한다.
http://springdale.math.ias.edu/data/puias/unsupported/7/SRPMS/ddd-3.3.12-20.sdl7.src.rpm

  • 압축해제
다운로드 한 rpm 파일을 압축해제 한다.

% rpm2cpio ddd-3.3.12-20.sdl7.src.rpm | cpio -idv

위 명령에 대한 자세한 설명은, 구글에서 "rpm 압축해제" 라고 검색하면 나온다.

  • 설정
컴파일을 하기 전에 설정을 먼저 해야 한다.
설정은 일반적으로 configure 를 사용해서 한다.

% ./configure --prefix=$HOME/ddd

prefix 에 자신이 설치하고 싶은 디렉토리를 넣어주면 된다.
configure 진행 중 에러가 발생했다.

configure: error: The X11 library '-lX11' could not be found.
                  Please use the configure options '--x-includes=DIR'
                  and '--x-libraries=DIR' to specify the X location.
                  See the files 'config.log' and 'ddd/config.log'
                  for further diagnostics.

추가적인 파일을 설치해주고 다시 진행을 한다.

% yum install libX11-devel

또 에러가 발생했다.

configure: error: The X toolkit library '-lXt' could not be found.
                  Please use the configure options '--x-includes=DIR'
                  and '--x-libraries=DIR' to specify the X location.
                  See the files 'config.log' and 'ddd/config.log'
                  for further diagnostics.

추가적인 파일을 설치해주고 다시 진행을 한다.

% yum install libXt-devel

또 에러가 발생했다.

configure: error: The Motif include file 'Xm/Xm.h' could not be found.
                  Please use the configure options '--with-motif-includes=DIR'
                  and '--with-motif-libraries=DIR' to specify the Xm location.
                  See the files 'config.log' and 'ddd/config.log'
                  for further diagnostics.

추가적인 파일을 설치해주고 다시 진행을 한다.

% yum install openmotif-devel

드디어 잘되었다.

configure:
configuration is done.  Type `make' to make DDD.

  • 빌드
% make

컴파일을 진행한다.
컴파일이 성공적으로 완료되면 다행인데,
나 같은 경우는 컴파일 작업중에 에러가 발생했다.

strclass.C: In function ‘std::istream& operator>>(std::istream&, string&)’:
strclass.C:1546:35: error: ‘EOF’ was not declared in this scope
     while ((ch = sb->sbumpc()) != EOF)
                                   ^
strclass.C:1559:15: error: ‘EOF’ was not declared in this scope
     if (ch == EOF)
               ^
strclass.C: In function ‘int readline(std::istream&, string&, char, int)’:
strclass.C:1589:35: error: ‘EOF’ was not declared in this scope
     while ((ch = sb->sbumpc()) != EOF)
                                   ^
strclass.C:1602:15: error: ‘EOF’ was not declared in this scope
     if (ch == EOF)
               ^
make[2]: *** [strclass.o] 오류 1
make[2]: Leaving directory `/home/ck0911.kim/ddd-3.3.12-20.sdl7.src/ddd-3.3.12/ddd'
make[1]: *** [all] 오류 2
make[1]: Leaving directory `/home/ck0911.kim/ddd-3.3.12-20.sdl7.src/ddd-3.3.12/ddd'
make: *** [all-recursive] 오류 1

원인이 무엇인지 구글링을 했다.
EOF 에 대한 정의가 없어서 안되는거란다.

소스파일에 #define EOF -1 를 추가해 줘도 되고,
나 같은 경우는 그냥 stdio.h 를 추가해줬다.

% vi ddd/strclass.C

include 구문들이 있는 곳에 아래 구문을 추가해준다.
#include <stdio.h>

다시 컴파일을 진행한다.
컴퓨터 사양에 따라 시간이 좀 걸릴 수 있으므로, 느긋하게 커피 한잔 하면서 기다리면 된다.

  • 설치
% make install

컴파일 된 결과물들을 $HOME/ddd 에 설치하는 작업이다.

실제 ddd 디렉토리가 생성되어 있는걸 볼 수 있다.
그 디렉토리 안에 들어가면 bin 디렉토리가 보인다.
그 디렉토리 안에 들어가면 실행 가능한 바이너리 파일이 보인다.
그 바이너리 파일을 아무대서나 실행할 수 있도록 PATH 에 추가해 준다.

$HOME/.bashrc 맨 마지막에
"export PATH=$PATH:$HOME/ddd/bin" 구문을 추가해 주면 된다.

  • 실행
% ddd

아래와 같이 화면이 뜨면 잘 설치된 것이다.




출처
https://savannah.gnu.org/bugs/?33960
https://stackoverflow.com/questions/4577453/fcgio-cpp50-error-eof-was-not-declared-in-this-scope
https://stackoverflow.com/questions/13986636/cannot-find-lx11
https://www.howtoforge.com/community/threads/problem-in-installing-ddd-3-3-11-on-rhel5-machine.24515

댓글 없음:

댓글 쓰기

화곡 어쩌라고, 굴사냥

석화찜(굴찜)을 먹으러 여의도로 갔다 그런데 재료가 모두 소진되었다고 마감이라고 한다 응? 다들 굴에 미쳤나? 굴을 찾아 헤매다 보니, 화곡까지 가게 되었다. 화곡은 처음 가본다. 첫인상은 "술집 겁네 많네" 피똥쌀때까지 마실 수 있...