On Wed, 11 Jul 2001 21:57:08 MDT, bowman <bowman montana com> said: > From: "Ashutosh Singh" <ashutoshvsingh hotmail com> > > I built gtk version 1.2.8 and 1.2.9 and 1.2.10 and they are all > > giving core dump, when you try to run the test files on AIX 4.3.3 > I'm running on AIX4.3, but the machine is at work, and I can't recall the > setup? I am thinking I had to go with static libraries. Also, what You can get shared libraries to work, with a little aggravation. This is what I ended up doing: 1) Hack up 'libtool' to not pass the '-berok' flag when building a shared library. This will cause errors when linking, so you have to: 2) Fix each tool to pass the added -lFoo flags needed to get rid of the errors. A lot of programs that use libtool to build are very lazy about passing all the needed '-lXm -lXt -lX11 -lm' flags. Technically speaking, you *can* get it to work just by doing (2) for each program - but doing (1) enforces it as you don't get a clean build till you get it right. For the technically minded, here's the explanation of the problem: The way the AIX linker is implemented, it only records the -lFoo flags actually passed when a shared lib is created. So let's say you create a shared libfoo.a that calls something in libbar.a. There's 2 possibilities: 1) You link with '-lbar'. Libfoo.a then gets created with a reference to libbar.a (use 'dump -H libfoo.a' to check). At runtime, your program's references to libbar.a get resolved, and all is fine. 2) You link with '-berok' and *dont* pass -lbar (which is what libtool does by default - it likes to skip all the -lXt -lX11 -lm stuff). Since you didn't pass -lbar, no reference to libbar.a gets recorded in libfoo.a. And since you specified -berok, it gets flagged as an OK library. At runtime, your program's references to libfoo.a get resolved - but any libfoo.a references to libbar.a are *not* resolved even if some other module/library DOES reference libbar.a - the runtime binder says "no reference in libfoo.a, no need to fixup". Your program then crashes when it branches through an unresolved function pointer thinking it's heading to libbar.a.
Attachment:
pgpUEN4BiZQU4.pgp
Description: PGP signature