[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Linking issues-Movie



hi,

have a look to see if it's in any other file.  I should have said grep is just a quick way to guess... but it may not define the symbol, just because it greps to be in there.

Use the command nm to list symbols.  So with that you should be able to find which one defines it.

eg.
    nm bla.so
    nm bla.o


Otherwise have a look in the ffmpeg source to see where it is getting compiled into.

cu,



On Fri, May 22, 2009 at 9:21 AM, Tyler Laing <trinioler@xxxxxxxxx> wrote:
Thanks Rene,

Now I have this issue:

tyler@Surak:~/pygame_movie$ python -c "import pygame.gmovie"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: /usr/lib/libavcodec.so.51: undefined symbol: av_random_init
tyler@Surak:~/pygame_movie$ grep "av_random_init" /usr/lib/libavcodec.so.51
Binary file /usr/lib/libavcodec.so.51 matches

Is there any way to force the gmovie.so to link to a specific library file?

-Tyler


On Thu, May 21, 2009 at 3:05 PM, René Dudfield <renesd@xxxxxxxxx> wrote:
hello,

you can grep the shared modules to find where that function is...

It apppears to be in libavcodec.so


You can see what your gmovie.so has linked to it on linux with:
$ ldd gmovie.so

Or on OSX with:
$ otool -L gmovie.so


cheers,




On Fri, May 22, 2009 at 8:00 AM, Tyler Laing <trinioler@xxxxxxxxx> wrote:
Sorry to bother you all again,

Now when I type import pygame.gmovie, it gives this error:
ImportError: /usr/lib/python2.5/site-packages/pygame/gmovie.so: undefined symbol: av_audio_convert_free

So I included both the audioconvert.h and audioconvert.c files into the pygame source directory. But I can't figure out how to link these files into the gmovie.so executable. I don't have a lot of experience linking files together, and all of your help has been much appreciated!

-Tyler


On Thu, May 21, 2009 at 2:33 PM, Tyler Laing <trinioler@xxxxxxxxx> wrote:
Lenard,

Thank you very much! That worked.

-Tyler


On Thu, May 21, 2009 at 1:26 PM, Lenard Lindstrom <len-l@xxxxxxxxx> wrote:
When building ffmpeg you have to pass --enable-shared to ./configure. Do a ./configure --help to see all the options.

Lenard


Tyler Laing wrote:
Hello all,

Making fast progress here. I've got a question for later, but the more relevant one right now is this:

The extension compiles, and it fails when linking with libavformat.
The error message is this:
gcc -pthread -shared -Wl,-O1,-Bsymbolic-functions build/temp.linux-x86_64-2.5/src/ff_movie.o -lSDL -lavformat -lavdevice -lavcodec -lavutil -lswscale -o build/lib.linux-x86_64-2.5/pygame/gmovie.so
/usr/bin/ld: /usr/local/lib/avformat.a(allformats.o): relocation of R_X86_64_32 against 'aac_demuxer' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavformat.a: could not read symbols: Bad value
collect2: ld returned with 1 exit status
error: command 'gcc' failed with exit status 1


In addition, to be able to get to the compilation stage one needs to do this:
-download ffmpeg-0.5.0
-run ./configure in ffmpeg-0.5.0 directory
-run make
-run make install (will need admin privileges?)
-cd libswscale
-run make
-run make install (will need admin privileges?)

This will put all the correct versions of the header files in /usr/local/include (depending on the distribution)

-Tyler

--
Visit my blog at http://oddco.ca/zeroth/zblog




--
Visit my blog at http://oddco.ca/zeroth/zblog



--
Visit my blog at http://oddco.ca/zeroth/zblog




--
Visit my blog at http://oddco.ca/zeroth/zblog