Page 1 of 1

Building vlc-0.8.6a: undefined reference to `gpg_strerror'

Posted: 21 Mar 2007 00:20
by sp02
I'm trying to build vlc-0.8.6a on Fedora 6.0. I need amr_nb streaming support (I've successfully built ffmpeg).
I ran into this gpg_strerror undefined issue during 'make' in extras/contrib.

Can anyone please get me going on this one? I appreaciate it.
If I can install all the dependency libraries through 'yum' do I need to build "extras/contrib" ?

thanks,
sp02

Here is my configure parameters for VLC
./configure --enable-x11 --enable-xvideo --disable-gtk --disable-libmpeg2 --enable-sdl --enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-amr_nb --enable-mad --enable-libdvbpsi --enable-a52 --enable-dts --enable-dvdnav --enable-faad --enable-debug --enable-vorbis --enable-ogg --enable-theora --enable-faac --enable-mkv --enable-freetype --enable-fribidi --enable-speex --enable-flac --enable-live555 --with-live555-tree=/usr/lib/ --enable-caca --enable-skins --enable-skins2 --enable-alsa --disable-kde --enable-qt --enable-wxWidgets --enable-wxwindows --enable-ncurses --enable-release

Here is the error

if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../src -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/include -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/include -Wall -MT basic.o -MD -MP -MF ".deps/basic.Tpo" -c -o basic.o basic.c; \
then mv -f ".deps/basic.Tpo" ".deps/basic.Po"; else rm -f ".deps/basic.Tpo"; exit 1; fi
/bin/sh ../libtool --tag=CC --mode=link gcc -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/include -Wall -L/home/harish/vlc-0.8.6a/extras/contrib/lib -o basic basic.o ../src/libgcrypt.la -lnsl -lnsl
gcc -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/include -Wall -o .libs/basic basic.o -L/home/harish/vlc-0.8.6a/extras/contrib/lib ../src/.libs/libgcrypt.so -lnsl -Wl,--rpath -Wl,/home/harish/vlc-0.8.6a/extras/contrib/lib
basic.o: In function `check_cbc_mac_cipher':
basic.c:(.text+0x396): undefined reference to `gpg_strerror'
basic.c:(.text+0x4be): undefined reference to `gpg_strerror'
basic.c:(.text+0x536): undefined reference to `gpg_strerror'
basic.c:(.text+0x641): undefined reference to `gpg_strerror'
basic.o: In function `check_aes128_cbc_cts_cipher':
basic.c:(.text+0xae1): undefined reference to `gpg_strerror'

Re: Building vlc-0.8.6a: undefined reference to `gpg_strerro

Posted: 21 Mar 2007 20:42
by xtophe
If I can install all the dependency libraries through 'yum' do I need to build "extras/contrib" ?
No
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../src -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/include -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/include -Wall -MT basic.o -MD -MP -MF ".deps/basic.Tpo" -c -o basic.o basic.c; \
then mv -f ".deps/basic.Tpo" ".deps/basic.Po"; else rm -f ".deps/basic.Tpo"; exit 1; fi
/bin/sh ../libtool --tag=CC --mode=link gcc -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/include -Wall -L/home/harish/vlc-0.8.6a/extras/contrib/lib -o basic basic.o ../src/libgcrypt.la -lnsl -lnsl
gcc -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/home/harish/vlc-0.8.6a/extras/contrib/include -I/include -Wall -o .libs/basic basic.o -L/home/harish/vlc-0.8.6a/extras/contrib/lib ../src/.libs/libgcrypt.so -lnsl -Wl,--rpath -Wl,/home/harish/vlc-0.8.6a/extras/contrib/lib
basic.o: In function `check_cbc_mac_cipher':
basic.c:(.text+0x396): undefined reference to `gpg_strerror'
basic.c:(.text+0x4be): undefined reference to `gpg_strerror'
basic.c:(.text+0x536): undefined reference to `gpg_strerror'
basic.c:(.text+0x641): undefined reference to `gpg_strerror'
basic.o: In function `check_aes128_cbc_cts_cipher':
basic.c:(.text+0xae1): undefined reference to `gpg_strerror'
Looks like you're missing libgpg-error

Posted: 22 Mar 2007 03:29
by sp02
Thanks for the quick response. I hope you can help further..

I'm trying to stream AMR encoded audio on HTTP port, please readon...

I dropped building the extras/contrib directory.

Here is my VLC config options
./configure --enable-x11 --enable-xvideo --without-contrib --disable-gtk --disable-libmpeg2 --enable-sdl --enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-amr_nb --enable-mad --enable-libdvbpsi --enable-a52 --enable-dts --enable-dvdnav --enable-faad --enable-debug --enable-vorbis --enable-ogg --enable-theora --enable-faac --enable-mkv --enable-freetype --enable-fribidi --enable-speex --enable-flac --enable-live555 --with-live555-tree=/usr/lib/ --enable-caca --enable-skins --enable-skins2 --enable-alsa --disable-kde --enable-qt --enable-wxWidgets --enable-ncurses --enable-release

Now I've built vlc-0.8.6a/ successfully, I had to change the following
1. specify the header file search path to include below, in modules/demux/Makefile
-I/usr/include/UsageEnvironment -I/usr/include/groupsock -I/usr/include/liveMedia -I/usr/include/BasicUsageEnvironment

2. Linked vlc manually, otherwise it was not taking GroupSock symbols ( I had to give the -lgroupsock after UsageEnvironment I guess)

g++ -Wsign-compare -Wall -pipe -o vlc vlc-vlc.o -g src/libvlc.a ./modules/misc/memcpy/libmemcpymmx.a ./modules/video_chroma/libi420_rgb_mmx.a ./modules/video_chroma/libi422_yuy2_mmx.a ./modules/video_chroma/libi420_ymga_mmx.a ./modules/video_chroma/libi420_yuy2_mmx.a ./modules/misc/memcpy/libmemcpymmxext.a ./modules/misc/memcpy/libmemcpy3dn.a ./modules/demux/liblive555.a -L/usr/local/lib -L/lib -lhal -ldbus-1 -lrt -lpthread -ldl -lm -lgroupsock -lBasicUsageEnvironment -lliveMedia -lUsageEnvironment -lgroupsock

I had built ffmpeg with AMR NB support earlier.
How do I make sure it has the amr support?
nm /usr/lib/libavcodec.so | grep -i amr
00358e40 t Decoder_amr
003587d0 t Decoder_amr_reset
00355fc0 t amr_nb_decode_close
00355f20 t amr_nb_decode_frame
00355fe0 t amr_nb_decode_init
0041dac0 D amr_nb_decoder
00355dd0 t amr_nb_encode_close
00355e10 t amr_nb_encode_frame
00355e60 t amr_nb_encode_init
0041db00 D amr_nb_encoder
0035ee90 t cod_amr_reset

I can see amr_nb when I do ffmpeg -formats (I don't know what the DEA flags stand for ?)
DEA adpcm_yamaha
D A alac
DEA amr_nb
DEV D asv1
DEV D asv2
D V D avs


When I try to stream in AMR format I get the following error
[00000371] ffmpeg decoder debug: ffmpeg codec (Windows Media Audio 2) started
[00000371] main decoder debug: using decoder module "ffmpeg"
[00000372] main encoder debug: looking for encoder module: 10 candidates
[00000372] ffmpeg encoder debug: libavcodec already initialized
[00000372] ffmpeg encoder error: cannot find encoder AMR narrow band
[00000318] stream_out_transcode private error: cannot find encoder ((null))
[00000371] ffmpeg decoder debug: ffmpeg codec (Windows Media Audio 2) stopped
[00000371] main decoder debug: removing module "ffmpeg"
:(

Thanks for the help,
sp02

Posted: 17 Jun 2007 05:36
by yinglcs
Hi,

i am having the same problem when compile extra/contrib under ubuntu.

i have install libgpg-error 1.6 in /usr/local/lib

$ pwd libgpg-error.so
/usr/local/lib
$ nm libgpg-error.so | grep gpg_strerror
00000950 T gpg_strerror
00000780 T gpg_strerror_r

And i have /usr/local/lib in my LD_LIBRARY_PATH,
but I still have this error, can you please help me?

basic.o: In function `check_cbc_mac_cipher':
basic.c:(.text+0x3b3): undefined reference to `gpg_strerror'
basic.c:(.text+0x4ed): undefined reference to `gpg_strerror'
basic.c:(.text+0x568): undefined reference to `gpg_strerror'
basic.c:(.text+0x67f): undefined reference to `gpg_strerror'
basic.o: In function `check_aes128_cbc_cts_cipher':
basic.c:(.text+0xb59): undefined reference to `gpg_strerror'

Re: Building vlc-0.8.6a: undefined reference to `gpg_strerror'

Posted: 12 Jul 2007 05:07
by Robo210
I ran into this same problem, and found that the easier way to fix this is to add gpg-error to the dependencies for these files.
To do this, go into extra/contrib/src/libgcrypt/tests and open the file Makefile.in
Find the line "basic_LDADD = $(LDADD)" and add "-lgpg-error" to the end of it. Do this for tsexp, keygen, and benchmark too.
Now when you run make everything should work. It's possible that the configure script will overwrite your changes, so simple move it someplace and make a new one that is empty except for the line "#! /bin/sh". It is also possible that you will need to do a make install in extra/contrib/src/libgpg-error first (passing the full path to extra/contrib/ to "./configure --prefix" if you don't want libgpg-error installed permanently).
While I'm sure that their is a cleaner way of fixing this (such as adding gpg-error to LDADD) these changes should do the trick to make it work.