AIX 5

AIX: ar command

AIX에서 연관되어있는 모듈 관계를 보면 shared object인 .so파일 보다는 .a 파일이 많이 나온다.과연 왜 이럴까? 라는 물음에서 남길만한 것을 찾았다. 아래의 내용은 man ar 명령으로 본 것이다. The ar command maintains the indexed libraries used by the linkage editor. The ar command combines one or more named files into a single archive file written in ar archive format. When the ar command creates a library, it creates headers in a transportable format; when it creat..

IT한 것/unix 2012.10.22

ESQL에서 오류상황시 SQLCODE가 나오지 않는 상황

INFORMIX의 ESQL을 이용하여 프리컴파일, 컴파일, 링킹을 수행한다. 물론 컴파일이나 링킹은 직접 해주어도 상관없다. 내가 겪은 상황은, ESQL을 이용한 경우이다. 그리고 바로 실행파일을 만든 것이 아니고, DB관련 기능은 모두 공유 라이브러리에 모아두고 그것을 호출하도록 구성시켰다. 그러나 이게 왠일? PREPARED STATEMENT를 만들고, CURSOR를 만들어 MULTI ROW에 대해서 FETCH를 시도했는데, 무한 루프에 빠지는 것이였다. 소스코드의 FETCH 는 SQLCODE 값이 100 즉 NOT FOUND가 나오는 것을 감지해야만 정상적인 로직을 타도록 구현되어 있다. 이상해서 디버깅을 해보았는데, SQLCODE값은 계속 0이였고, SQLSTATE는 비어있는 문자열이였다. 온갖삽..

IT한 것/unix 2009.11.13

AIX 이해가 안돼는 undefined symbol 오류 발생시.

분명히 symbol이 존재하는 데도 링킹이 실패하는 경우가 발생했다. 혹시 이름에 오탈자가 있었나? 그것도 아니다. 진실은 기본에 있었다. C and C++ Application Development on AIX 2nd edition 문서를 참고하면 If you are creating a shared object and want all symbols to be exported, then you do not need to use an export file. You can use the -bexpall linker option, which will automatically export all global symbols (except imported symbols, unreferenced symbols def..

IT한 것/unix 2009.07.03

AIX에서 Informix esql 로 빌드할때에 생기는 문제

왠만한 환경이 아니고서야 DB를 Thread safe 모드로 빌드해야한다. Precompile 후에 모듈을 링킹하는 과정에서 cc를 사용했는데, 별 문제가 없었으나, 무슨 탓인지 AIX에서는 기가막힌 문제가 발생했다. 기존의 Makefile 로 빌드하면 loc_t 라는 구조체가 INFORMIX 헤더에도 있고 SYSTEM 헤더에도 있어서 충돌하는 문제가 발생한다. 이에 대한 해결책은 아래처럼 _H_LOCALEDEF 값을 선언해주면 된다. gcc -D_H_LOCALEDEF (원래옵션들) 그런다고 문제가 바로 해결되지는 않았다. 빌드과정에서는 모든 문제가 사라졌지만, 막상 모듈을 돌리려고 하면, t_connect 등의 t_로 시작하는 함수들이 참조는 되었으나 실 모듈에서는 찾을 수 없다는 어머어마한 오류가 뜬..

IT한 것/unix 2007.03.23

AIX에서 Informix esql을 사용하는 중 25507 오류

finderr 명령으로는 알아낼 수는 없지만, 보통 service name이 유효한 것이 아닐때에 발생한다고 한다. 그러나, 한두번 설정해본 것도 아니고 service name이 틀리지는 않았다. 사실 AIX에서 Informix esql을 사용해본 것이 처음이라는 것이 문제였다. 기존에 설정되어 있던 환경을 아는 것도 아니고, 다른 플랫폼에서 돌리던 설정을 가져오는 것에 불과하기에.. 해법은 간단했다, 누군가가 서비스 타입에 대해서 의견을 제시한 것을 발견했고 해당 플렛폼은 Soalris 라고 하는데.. 지금까지 설정은 Solaris에 있던것을 가져온 것이니, 서비스 타입을 바꿔보기로 했다. 원 서비스 타입은 ONTLITCP 였고 ONSOCTCP로 변경하였다. 그리고 상황 종료...

IT한 것 2007.03.23