database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9887 게시물 읽기
No. 9887
C프로그램에서 Postgresql 접속 및 조회하는 .so 파일 호출시 문의드립니다.
작성자
플그램초짜
작성일
2017-09-14 16:22
조회수
7,987

 안녕하세요.

Postgresql을 사용하는 라이브러리를 만들고 있는데.. 궁금한 점이 있어 문의드립니다.

 

A서버에서 Postgresql이 설치되어 있고, .pc파일로 Postgresql서버 접속해서 select까지 하는 프로그램을 라이브러리(.so)로 묶었습니다.

해당 .so 파일을 A서버에서 C언어로 작성된 프로그램에서 호출할 경우 Postgresql에 잘 접속해서 select도 잘 해오더군요..

 

그런데  이 .so파일을 B서버에서 같은 C언어 프로그램에서 호출하니 Connect 할때 세그멘테이션 폴트가 떨어지네요..

gdb로 보니

#0 0x0000dkfaf70sa90f in ECPGdo () from /product/PostgresPlus/9.2AS/lib/libecpg.so.6

에서 발생 된듯 한데.. 뭐가 문제인지 혹시 아시는 분 있으신가요?

 

A서버와 B서버 모두 같은 망에 있어서 방화벽 이런 문제는 아닌것 같고...참고로 OS는 둘다 리눅스입니다.

 

혹시 저 상황에서 B서버에서 Postgresql이 설치되어 있어야 하는건 아니죠..??

 

이 글에 대한 댓글이 총 4건 있습니다.

 EnterpriseDB사 Postgres Advanced Server를 사용하고 계신가 보내요. 

해당 제품은 상용 제품입니다.

당연히 판매한 회사 쪽으로 정식 서비스 요청(SR)을 보내고 공식 지원을 받으세요. 

김상기(ioseph)님이 2017-09-14 17:22에 작성한 댓글입니다.

가장 이상적인 것은,

 

    A 와 B 서버 모두에 같은 버전의 PostgreSQL 이 설치된 것.

 

인데, 이게 아니라면, 관련 so 파일과 연관된 파일이 모두 있어야 하고, 그 중 몇몇 파일은 버전까지 맞아야 합니다. ldd 명령으로 추적하면 실마리를 찾을 수 있읍니다. 아래는 제 리눅스 서버에서 libecpg.so.6.8 에 대해 ldd 를 실행한 화면입니다.

 

[sauron@q353-0140 ~]$ ldd /usr/local/pgsql-9.6.3/lib/libecpg.so.6.8

 

 

linux-vdso.so.1 =>  (0x00007fffb692b000)

libpgtypes.so.3 => /usr/local/pgsql-9.6.3/lib/libpgtypes.so.3 (0x00007f048d0fa000)

libpq.so.5 => /usr/local/pgsql-9.6.3/lib/libpq.so.5 (0x00007f048cecb000)

libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f048cc97000)

libc.so.6 => /lib64/libc.so.6 (0x00007f048c903000)

libm.so.6 => /lib64/libm.so.6 (0x00007f048c67e000)

libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f048c411000)

libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f048c02d000)

/lib64/ld-linux-x86-64.so.2 (0x0000003e80e00000)

libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f048bde8000)

libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f048bb01000)

libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f048b8fd000)

libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f048b6d0000)

libdl.so.2 => /lib64/libdl.so.2 (0x00007f048b4cc000)

libz.so.1 => /lib64/libz.so.1 (0x00007f048b2b6000)

libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f048b0aa000)

libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f048aea7000)

libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f048ac8d000)

 

 

 

초보대왕님이 2017-09-14 23:03에 작성한 댓글입니다.
이 댓글은 2017-09-15 11:54에 마지막으로 수정되었습니다. Edit

문제를 해결하고 결과 답변으로 알려 드리려고 했는데...

시간이 좀 걸릴것 같네요..

 

@김상기님

현재 사용하고 있는 Postgresql이 상용제품이 아니라 무료버전 입니다. 그래서 지원을 받기 힘들고요..^^;

 

@초보대왕님

말씀하신부분을 확인 하고 있는데, 다른 업무때문에 좀 시간이 걸릴것 같네요.

 

아무튼 두분 다 답변 감사드리고요..

또 궁금한점 있으면 문의 드리겠습니다^^

플그램초짜님이 2017-09-18 13:17에 작성한 댓글입니다. Edit

무료 버전(EDB 사에서 빌드한 PostgreSQL 바이너리 배포판)을 사용하고 있다면,

libecpg 사용하는 경로를 그 배포판 라이브러리가 있는 곳으로 맞추셔야 할 것 같네요.

 

김상기(ioseph)님이 2017-09-19 10:18에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9890MS-SQL 쿼리문중에 [1]
허접입니다
2017-09-20
7560
9889C# 콘솔 응용프로그램에서 [1]
초보개발자
2017-09-18
7684
9888MS-SQL 데이터를 PostgreSQL로 [2]
왕초보개발자
2017-09-14
8463
9887C프로그램에서 Postgresql 접속 및 조회하는 .so 파일 호출시 문의드립니다. [4]
플그램초짜
2017-09-14
7987
9884다른 Session에서 다른 table에 lock인 상태에서 Vacuum을 하게되면 [17]
지현명
2017-09-12
8807
9883AutoVacuum 메뉴얼 공식관련 [6]
지현명
2017-09-11
9393
9882AutoVAcuum인데 테이블(파일) size 작아지는 현상 [3]
지현명
2017-09-08
8044
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다