Clarification of Question by
christopher_bell-ga
on
30 Nov 2006 05:38 PST
Thanks "maniac"
You've got about as far as I did, and at least you've identified the
problem in the run-time loader code.
Taking your proposed solutions in turn:
(1) Build the application on the machine on which it is running to
ensure compatibility. (Or force it to pick up the right library by
setting an explicit path.)
Unfortunately that won't work. Firstly our Linux cluster is reserved
for crunching, not compiling. Granted I could sneak the compilers
onto there, but that wouldn't be a complete solution because ...
... we sell this software, and we have no control over the platforms
on which clients ultimately run it. Therefore defining an explicit
path won't help either.
To add to my perplexity we built this on a RedHat Linux 7.3 machine,
and our cluster is running - supposedly - the same operating system.
(2) Link that library statically.
Again, a good suggestion. However OpenGL libraries cannot be linked
statically because the actual run-time library used depends on the
graphics card installed in the machine running the application. So a
machine with (say) an NVidia card will have a different run-time
library to one with an ATI card, and obviously we have to be
compatible with whatever card the client has installed. In fact a
static (libGL.a) library is usually not provided in the first place.
This may give a clue: the OpenGL run-time library on the machine in
question will have been installed with its graphics card (ATI Mach_64)
drivers, so any incompatibility is probably between the machine on
which ATI built their drivers and us.
(3) Turn off "verbose".
I'm not sure what you mean by this - possibly during the link phase
when building the application?
I'm reasonably certain that there is a solution since, as I said
previously, older versions of the same software don't exhibit this
problem.
I'm hoping that you will come up with something like:
- An option I can add during compiling and/or linking to suppress this
message. (Preferred, since no client intervention required)
- A way of amending the "as built" executable on a target system to
make it compatible with that system. (Not too bad: once-off operation
not requiring privileged access)
- A way of amending/adding version information in the troublesome
runtime library file. (Not great, because I'd have to explain it to
clients. they would need root privileges to do it, and any future
graphics driver update would probably re-introduce the problem; but
better than nothing.)
I hope that clarifies the question sufficiently.
(Sorry about the delayed response: I'm in the UK, and also Google
didn't notify me of your answer - probably our [deleted] corporate
firewall killed the email!)
Christopher Bell