Opened 6 years ago

Closed 6 years ago

#1695 closed defect (fixed)

build fails with --disable-mmx

Reported by: geronimo Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:
build of git-master fails on linux (debian squeeze 64bit) with this output:

LD      ffprobe_g
LD      ffplay_g
LD      ffmpeg_g
LD      ffserver_g
libavcodec/libavcodec.so: undefined reference to `ff_dnxhdenc_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_encode_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_common_init_x86'
collect2: ld returned 1 exit status
make: *** [ffserver_g] Fehler 1
make: *** Warte auf noch nicht beendete Prozesse...
libavcodec/libavcodec.so: undefined reference to `ff_dnxhdenc_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_encode_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_common_init_x86'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Fehler 1
libavcodec/libavcodec.so: undefined reference to `ff_dnxhdenc_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_encode_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_common_init_x86'
collect2: ld returned 1 exit status
make: *** [ffplay_g] Fehler 1
libavcodec/libavcodec.so: undefined reference to `ff_dnxhdenc_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_encode_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_common_init_x86'
collect2: ld returned 1 exit status

Change History (7)

comment:1 Changed 6 years ago by cehoyos

  • Priority changed from critical to normal

(Works fine here)

To make this a valid ticket, please add the configure line you tested, run make (it fails), run make again, then run "make V=1" and post the complete, uncut output of the last make call.

comment:2 Changed 6 years ago by geronimo

Ok, my configure is

./configure \
   --enable-nonfree \
   --enable-gpl \
   --disable-mmx \
   --enable-shared \
   --enable-version3 \
   --enable-runtime-cpudetect \
   --enable-hardcoded-tables \
   --enable-frei0r \
   --enable-libxvid \
   --enable-pic \
   --enable-libaacplus \
   --enable-libass \
   --enable-libcdio \
   --enable-libopencore-amrnb \
   --enable-libopencore-amrwb \
   --enable-libdc1394 \
   --enable-libfaac \
   --enable-libfreetype \
   --enable-libgsm \
   --enable-libmodplug \
   --enable-libmp3lame \
   --enable-libopenjpeg \
   --enable-libpulse \
   --enable-librtmp  \
   --enable-libschroedinger \
   --enable-libspeex \
   --enable-libtheora \
   --enable-libvpx \
   --enable-libxvid \
   --enable-openal \
   --enable-libx264

after performing the recommended commands, the output of make V=1 is

$ make V=1
gcc -Llibavcodec -Llibavdevice -Llibavfilter -Llibavformat -Llibavresample -Llibavutil -Llibpostproc -Llibswscale -Llibswresample -Wl,--as-needed -Wl,--warn-common -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample  -o ffmpeg_g ffmpeg_opt.o ffmpeg_filter.o ffmpeg.o cmdutils.o -lavdevice -lavfilter -lavformat -lavcodec -lpostproc -lswresample -lswscale -lavutil -ldl -ldl -ldl -lva -lcdio_paranoia -lcdio_cdda -lcdio -ljack -lasound -lSDL -ldc1394 -lraw1394 -lopenal -lxvidcore -lx264 -lvpx -lvpx -ltheoraenc -ltheoradec -logg -lspeex -lschroedinger-1.0 -lrtmp -lz -lgnutls -lpulse-simple -lpulse -lopenjpeg -lopencore-amrwb -lopencore-amrnb -lmp3lame -lmodplug -lgsm -lfreetype -lfaac -lass -laacplus -lm -pthread -lbz2 -lz -lrt  
libavcodec/libavcodec.so: undefined reference to `ff_dnxhdenc_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_encode_init_x86'
libavcodec/libavcodec.so: undefined reference to `ff_MPV_common_init_x86'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Fehler 1

may be I should remove the whole tree and check it out again.
But today I don't have the time for that.
May be tomorrow.

The error arised about 3 days ago

comment:3 Changed 6 years ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords regression added
  • Priority changed from normal to important
  • Reproduced by developer set
  • Status changed from new to open
  • Summary changed from build failes to build fails with --disable-mmx

(Unrelated to the actual ticket: Why are you using --disable-mmx ?)

comment:4 Changed 6 years ago by geronimo

Why are you using --disable-mmx ?

Don't remember well.
When I started to use ffmpeg from source, I had some troubles, I could eliminate by usage of that switch. But I don't remember that kind of troubles.

Based on your question I removed that switch from my configure option-list and build works fine.
I'll test the usage of ffmpeg - may be I can live without it.

Thanks.

comment:5 follow-up: Changed 6 years ago by cehoyos

  • Resolution set to fixed
  • Status changed from open to closed

Fixed by Diego.

comment:6 in reply to: ↑ 5 Changed 6 years ago by saste

  • Resolution fixed deleted
  • Status changed from closed to reopened

Replying to cehoyos:

Fixed by Diego.

Not yet.

configure --disable-optimizations --disable-mmx

Fails here with:

libavcodec/libavcodec.a(mpegvideoenc.o): In function `dct_quantize_MMX':
/home/stefano/src/ffmpeg/libavcodec/x86/mpegvideoenc_template.c:106: undefined reference to `ff_fdct_mmx'
libavcodec/libavcodec.a(mpegvideoenc.o): In function `dct_quantize_MMX2':
/home/stefano/src/ffmpeg/libavcodec/x86/mpegvideoenc_template.c:106: undefined reference to `ff_fdct_mmx2'
libavcodec/libavcodec.a(mpegvideoenc.o): In function `dct_quantize_SSE2':
/home/stefano/src/ffmpeg/libavcodec/x86/mpegvideoenc_template.c:106: undefined reference to `ff_fdct_sse2'

comment:7 Changed 6 years ago by saste

  • Resolution set to fixed
  • Status changed from reopened to closed

Fixed by Diego in:

commit ec36aa69448f20a78d8c4588265022e0b2272ab5
Author: Diego Biurrun <diego@biurrun.de>
Date:   Wed Aug 29 11:14:17 2012 +0200

    x86: Fix linking with some or all of yasm, mmx, optimizations disabled
    
    Some optimized template functions reference optimized symbols, so they
    must be explicitly disabled when those symbols are unavailable.
Note: See TracTickets for help on using tickets.