[MPlayer-users] Linker error when building on ARM9

Siddhesh Salelkar ssiddhesh at gmail.com
Fri Jul 9 07:34:47 CEST 2010


I am trying to build MPlayer for an ARM926 based system, from the
recent mplayer-export-2010-07-06 code base.

I used the following options when running configure:

./configure \
--prefix=/home/ssiddhesh/build-arm \
--enable-cross-compile \
--target=arm-linux \
--enable-armv5te \
--disable-armv6 \
--disable-armv6t2 \
--disable-armvfp \
--disable-neon \
--disable-iwmmxt \
--cc=arm-linux-gcc \
--host-cc=gcc \
--disable-mencoder \
--disable-gui

Everything compiles fine but I get linker error(s) at the end:

libavcodec/libavcodec.a(h264dsp_init_arm.o): In function `ff_h264dsp_init_neon':
h264dsp_init_arm.c:(.text+0x144): undefined reference to
`ff_h264_v_loop_filter_luma_neon'
h264dsp_init_arm.c:(.text+0x148): undefined reference to
`ff_h264_h_loop_filter_luma_neon'
h264dsp_init_arm.c:(.text+0x14c): undefined reference to
`ff_h264_v_loop_filter_chroma_neon'
h264dsp_init_arm.c:(.text+0x150): undefined reference to
`ff_h264_h_loop_filter_chroma_neon'
h264dsp_init_arm.c:(.text+0x154): undefined reference to
`ff_weight_h264_pixels_16x16_neon'
h264dsp_init_arm.c:(.text+0x158): undefined reference to
`ff_weight_h264_pixels_16x8_neon'
h264dsp_init_arm.c:(.text+0x15c): undefined reference to
`ff_weight_h264_pixels_8x16_neon'
h264dsp_init_arm.c:(.text+0x160): undefined reference to
`ff_weight_h264_pixels_8x8_neon'
h264dsp_init_arm.c:(.text+0x164): undefined reference to
`ff_weight_h264_pixels_8x4_neon'
h264dsp_init_arm.c:(.text+0x168): undefined reference to
`ff_weight_h264_pixels_4x8_neon'
h264dsp_init_arm.c:(.text+0x16c): undefined reference to
`ff_weight_h264_pixels_4x4_neon'
h264dsp_init_arm.c:(.text+0x170): undefined reference to
`ff_weight_h264_pixels_4x2_neon'
h264dsp_init_arm.c:(.text+0x174): undefined reference to
`ff_biweight_h264_pixels_16x16_neon'
h264dsp_init_arm.c:(.text+0x178): undefined reference to
`ff_biweight_h264_pixels_16x8_neon'
h264dsp_init_arm.c:(.text+0x17c): undefined reference to
`ff_biweight_h264_pixels_8x16_neon'
h264dsp_init_arm.c:(.text+0x180): undefined reference to
`ff_biweight_h264_pixels_8x8_neon'
h264dsp_init_arm.c:(.text+0x184): undefined reference to
`ff_biweight_h264_pixels_8x4_neon'
h264dsp_init_arm.c:(.text+0x188): undefined reference to
`ff_biweight_h264_pixels_4x8_neon'
h264dsp_init_arm.c:(.text+0x18c): undefined reference to
`ff_biweight_h264_pixels_4x4_neon'
h264dsp_init_arm.c:(.text+0x190): undefined reference to
`ff_biweight_h264_pixels_4x2_neon'
h264dsp_init_arm.c:(.text+0x194): undefined reference to `ff_h264_idct_add_neon'
h264dsp_init_arm.c:(.text+0x198): undefined reference to
`ff_h264_idct_dc_add_neon'
h264dsp_init_arm.c:(.text+0x19c): undefined reference to
`ff_h264_idct_add16_neon'
h264dsp_init_arm.c:(.text+0x1a0): undefined reference to
`ff_h264_idct_add16intra_neon'
h264dsp_init_arm.c:(.text+0x1a4): undefined reference to
`ff_h264_idct_add8_neon'
libavcodec/libavcodec.a(h264pred_init_arm.o): In function
`ff_h264_pred_init_neon':
h264pred_init_arm.c:(.text+0x140): undefined reference to `ff_pred8x8_vert_neon'
h264pred_init_arm.c:(.text+0x144): undefined reference to `ff_pred8x8_hor_neon'
h264pred_init_arm.c:(.text+0x148): undefined reference to
`ff_pred8x8_plane_neon'
h264pred_init_arm.c:(.text+0x14c): undefined reference to
`ff_pred8x8_128_dc_neon'
h264pred_init_arm.c:(.text+0x150): undefined reference to `ff_pred8x8_dc_neon'
h264pred_init_arm.c:(.text+0x154): undefined reference to
`ff_pred8x8_left_dc_neon'
h264pred_init_arm.c:(.text+0x158): undefined reference to
`ff_pred8x8_top_dc_neon'
h264pred_init_arm.c:(.text+0x15c): undefined reference to
`ff_pred8x8_l0t_dc_neon'
h264pred_init_arm.c:(.text+0x160): undefined reference to
`ff_pred8x8_0lt_dc_neon'
h264pred_init_arm.c:(.text+0x164): undefined reference to
`ff_pred8x8_l00_dc_neon'
h264pred_init_arm.c:(.text+0x168): undefined reference to
`ff_pred8x8_0l0_dc_neon'
h264pred_init_arm.c:(.text+0x16c): undefined reference to `ff_pred16x16_dc_neon'
h264pred_init_arm.c:(.text+0x170): undefined reference to
`ff_pred16x16_vert_neon'
h264pred_init_arm.c:(.text+0x174): undefined reference to
`ff_pred16x16_hor_neon'
h264pred_init_arm.c:(.text+0x178): undefined reference to
`ff_pred16x16_left_dc_neon'
h264pred_init_arm.c:(.text+0x17c): undefined reference to
`ff_pred16x16_top_dc_neon'
h264pred_init_arm.c:(.text+0x180): undefined reference to
`ff_pred16x16_128_dc_neon'
h264pred_init_arm.c:(.text+0x184): undefined reference to
`ff_pred16x16_plane_neon'
collect2: ld returned 1 exit status
make: *** [mplayer] Error 1

Going through the error and the related source files, it appears that
the undefined references are due to an incorrect build (trying to link
objects which were not built).

I added

#if HAVE_NEON

around the prototypes and instead of the

if (HAVE_NEON)

in files

libavcodec/arm/h264dsp_init_arm.c
libavcodec/arm/h264pred_init_arm.c

and I was able to build MPlayer without any errors, the resulting
binary runs great on my ARM system.

Perhaps this is a small build issue that needs to be fixed.

Regards,
Siddhesh


More information about the MPlayer-users mailing list