IT한 것/unix

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

lovian 2007. 3. 23. 15:06
왠만한 환경이 아니고서야 DB를 Thread safe 모드로 빌드해야한다.

Precompile 후에 모듈을 링킹하는 과정에서 cc를 사용했는데, 별 문제가 없었으나,
무슨 탓인지 AIX에서는 기가막힌 문제가 발생했다.

기존의 Makefile 로 빌드하면 loc_t 라는 구조체가 INFORMIX 헤더에도 있고 SYSTEM 헤더에도 있어서 충돌하는 문제가 발생한다.
이에 대한 해결책은 아래처럼 _H_LOCALEDEF 값을 선언해주면 된다.


gcc -D_H_LOCALEDEF (원래옵션들)
그런다고 문제가 바로 해결되지는 않았다.

빌드과정에서는 모든 문제가 사라졌지만, 막상 모듈을 돌리려고 하면, t_connect 등의 t_로 시작하는 함수들이 참조는 되었으나 실 모듈에서는 찾을 수 없다는 어머어마한 오류가 뜬다.
물론 링킹하는 libthasf.so 를 조사해 보면 해당 함수가 존재한다.

결국 esql로 링킹까지 해보고 나서야 이유를 알게 되었다.
libifasf.so 또한 링킹이 되어 있던 것이다.

정확하게 각 라이브러리들이 어떤 역할을 하는지 알지 못하지만, th 붙은 것이 thread safe한 녀석이라고 생각했는데..
좀더 알아볼것 투성이다.