Re: [AD] undefined symbol _accel_bank_stub on Debian |
[ Thread Index |
Date Index
| More lists.liballeg.org/allegro-developers Archives
]
On Fri, 2004-11-19 at 15:47 +0100, Monsieur OUXX Nutch wrote:
> Hello,
>
> I wanted to submit a problem about the Linux version
> of Allegro.
>
> 1/ This problem doesn't seem to come from my shared
> libraries (read below).
>
> 2/ I'm using Knoppix (almost Debian)
>
> 3/ I was trying to run AGS (a well-known project using
> allegro) when I got the following message : "./ags:
> relocation error: /usr/local/lib/liballeg.so.4.1:
> undefined symbol: _accel_bank_stub"
>
Which allegro version? I just checked 4.1.16, it doesn't even have that
symbol (unless you would compile with VBEAF support, which is off by
default). Previous version included VBEAF support.. so I'd say this is a
version conflict. Remember, only 4.0.x are ABI compatible, WIP versions,
i.e. 4.1.x, like 4.1.16 and 4.1.15 all need the same shared lib as as
the program version. If ags is compiled with allegro 4.1.14, then it
needs the allegro-4.1.14.so.
What does "ldd ags" say?
> 4/ Have a look at the following url :
> http://people.debian.org/~dirson/shlibs/per-maint.txt
> => It looks that this "_accel_bank_stub" is undefined
> in any Debian.
>
Well, that is not a problem. The allegro.so will have a lot of undefined
symbols, not just accel_bank_stub, that site just lists only one
example. Those symbols are resolved by the program using allegro, it
will provide all of the missing symbols. E.g. the ags executable would
have the _accel_bank_switch inside it.
> 5/ From what I read, _accel_bank_stub is closely
> linked to display modes... so maybe the problem could
> be corrected by switching to another "default" display
> mode when the function for the accelerated one is
> causing a problem ? (ie "cannot be found in the
> system")
>
I guess the symbols are resolved at loading the executable, so it
wouldn't help.
> 6/ I tried to compile allegro "static" and then
> "shared", using the switches of the "configure"
> script, but it didn't change anything (I guess it has
> nothing to do with it but I give any info I can)
You need to compile the program as well. If you compile the program as
static, it will use the static Allegro library, and not need a .so at
runtime. If you compile shared, it will need the .so at runtime. With
the stable versions, and .so will do. With WIP versions, only the same
one. That's the reason you should release binaries either as static
linked (so no .so is needed), or by using the stable version.
--
Elias Pschernig