[mythtv] Mythtv CVS on AMD64 wants -fPIC
Rutger Hendriks
Loial at home.nl
Fri Nov 26 10:43:11 UTC 2004
Hi list,
current CVS of mythtv fails to compile the libavcodec directory
it complains about:
postprocess.o: relocation R_X86_64_32S against `a local symbol' can not be
used when making a shared object; recompile with -fPIC
postprocess.o: could not read symbols: Bad value
here's the build output:
$ make
cd libs && qmake libs.pro -o Makefile
cd libs && make -f Makefile
make[1]: Entering directory `/home/loial/myth/mythtv/libs'
cd libavcodec && qmake libavcodec.pro -o Makefile
cd libavcodec && make -f Makefile
make[2]: Entering directory `/home/loial/myth/mythtv/libs/libavcodec'
gcc -c -pipe -w -O3 -march=k8 -fomit-frame-pointer -O3 -Wall -fPIC -DPIC -fPIC
-fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -D_GNU_SOURCE -D_REENTRANT -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr\" -DMMX -DCONFIG_VIDEO4LINUX
-DUSING_IVTV -DLCD_DEVICE -DQT_NO_DEBUG -DQT_THREAD_SUPPORT
-I/usr/qt/3/mkspecs/linux-g++ -I. -I../.. -I/usr/qt/3/include -o common.o
common.c
<snip identical lines with only object file change>
gcc -c -pipe -w -O3 -march=k8 -fomit-frame-pointer -O3 -Wall -fPIC -DPIC -fPIC
-fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -D_GNU_SOURCE -D_REENTRANT -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr\" -DMMX -DCONFIG_VIDEO4LINUX
-DUSING_IVTV -DLCD_DEVICE -DQT_NO_DEBUG -DQT_THREAD_SUPPORT
-I/usr/qt/3/mkspecs/linux-g++ -I. -I../.. -I/usr/qt/3/include -o vp3dsp_mmx.o
i386/vp3dsp_mmx.c
gcc -c -pipe -w -O3 -march=k8 -fomit-frame-pointer -O3 -Wall -fPIC -DPIC -fPIC
-fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -D_GNU_SOURCE -D_REENTRANT -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr\" -DMMX -DCONFIG_VIDEO4LINUX
-DUSING_IVTV -DLCD_DEVICE -DQT_NO_DEBUG -DQT_THREAD_SUPPORT
-I/usr/qt/3/mkspecs/linux-g++ -I. -I../.. -I/usr/qt/3/include -o
vp3dsp_sse2.o i386/vp3dsp_sse2.c
rm -f libmythavcodec-0.16.so.0.16.0 libmythavcodec-0.16.so
libmythavcodec-0.16.so.0 libmythavcodec-0.16.so.0.16
g++ -Wl,-rpath,/usr/qt/3/lib -shared -Wl,-soname,libmythavcodec-0.16.so.0 -o
libmythavcodec-0.16.so.0.16.0 common.o utils.o mem.o allcodecs.o mpegvideo.o
h263.o jrevdct.o jfdctfst.o mpegaudio.o ac3enc.o mjpeg.o audresample.o
dsputil.o motion_est.o imgconvert.o imgresample.o msmpeg4.o mpeg12.o
h263dec.o svq1.o rv10.o mpegaudiodec.o pcm.o simple_idct.o ratecontrol.o
adpcm.o eval.o jfdctint.o dv.o error_resilience.o wmadec.o fft.o mdct.o
mace.o huffyuv.o opts.o cyuv.o golomb.o h264.o raw.o indeo3.o asv1.o vp3.o
4xm.o cabac.o ra144.o ra288.o vcr1.o cljr.o roqvideo.o dpcm.o tscc.o
interplayvideo.o xan.o rpza.o cinepak.o msrle.o msvideo1.o vqavideo.o
idcinvideo.o adx.o rational.o faandct.o snow.o sonic.o 8bps.o parser.o smc.o
flicvideo.o truemotion1.o vmdav.o lcl.o qtrle.o g726.o flac.o vp3dsp.o
integer.o h261.o resample2.o h264idct.o png.o pnm.o qdrw.o qpeg.o
rangecoder.o ulti.o xl.o postprocess.o a52dec.o bit_allocate.o bitstream.o
downmix.o imdct.o parse.o crc.o resample.o fdct_mmx.o cputest.o dsputil_mmx.o
mpegvideo_mmx.o idct_mmx.o motion_est_mmx.o simple_idct_mmx.o
fft_sse.ovp3dsp_mmx.o vp3dsp_sse2.o -L/usr/qt/3/lib -L/usr/X11R6/lib
-lqt-mt -lXext -lX11 -lm -lpthread
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/../../../../x86_64-pc-linux-gnu/bin/ld:
postprocess.o: relocation R_X86_64_32S against `a local symbol' can not be
used when making a shared object; recompile with -fPIC
postprocess.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libmythavcodec-0.16.so.0.16.0] Error 1
make[2]: Leaving directory `/home/loial/myth/mythtv/libs/libavcodec'
make[1]: *** [sub-libavcodec] Error 2
make[1]: Leaving directory `/home/loial/myth/mythtv/libs'
make: *** [sub-libs] Error 2
I've tried placing -fPIC at every location I could think of, but the problem
remained, so I must be forgetting something.
I hope you know what to change.
Thanks,
Rutger
More information about the mythtv-dev
mailing list