[x264-devel] x264 - linker issue OS X (Intel Core 2 Duo)

Stéphane Gasparini sgasparini at mac.com
Thu May 29 17:08:43 CEST 2008


Hi all,

I wanted to investigate an issue with x264 within vlc.

So I started to compile vlc 0.8.6.f and after having solved some issue on vlc build process in itself, I'm facing some issue with libx264.a library that configure of vlc thinks is not existing.

Here is the investigation I made so far.

I created a contest.c and compiled it with command line used by vlc configure.

here is the content of myconftest.c
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char x264_encoder_open ();
int
main ()
{
x264_encoder_open ();
  ;
  return 0;
}

when I compile it with
gcc -o myconftest -Wsign-compare -Wall  -I/Users/r42555/Documents/vlc-0.8.6f/./extras/contrib/include -D_INTL_REDIRECT_MACROS -pipe  -I/Users/r42555/Documents/vlc-0.8.6f/./extras/contrib/include -DSYS_DARWIN  -L/Users/r42555/Documents/vlc-0.8.6f/./extras/contrib/lib -lmx -lm  myconftest.c -lx264

I got those errors, that explain why vlc configure is failing
/usr/bin/ld: Undefined symbols:
_x264_cpu_cpuid
_x264_cpu_cpuid_test
_x264_emms
_x264_add4x4_idct_mmxext
_x264_dct4x4dc_mmxext
_x264_idct4x4dc_mmxext
_x264_sub4x4_dct_mmxext
_x264_center_filter_mmxext
_x264_horizontal_filter_mmxext
_x264_mc_chroma_sse
_x264_pixel_sad_16x16_mmxext
_x264_pixel_sad_16x8_mmxext
_x264_pixel_sad_4x4_mmxext
_x264_pixel_sad_4x8_mmxext
_x264_pixel_sad_8x16_mmxext
_x264_pixel_sad_8x4_mmxext
_x264_pixel_sad_8x8_mmxext
_x264_pixel_satd_16x16_mmxext
_x264_pixel_satd_16x8_mmxext
_x264_pixel_satd_4x4_mmxext
_x264_pixel_satd_4x8_mmxext
_x264_pixel_satd_8x16_mmxext
_x264_pixel_satd_8x4_mmxext
_x264_pixel_satd_8x8_mmxext
_x264_pixel_ssd_16x16_mmxext
_x264_pixel_ssd_16x8_mmxext
_x264_pixel_ssd_4x4_mmxext
_x264_pixel_ssd_4x8_mmxext
_x264_pixel_ssd_8x16_mmxext
_x264_pixel_ssd_8x4_mmxext
_x264_pixel_ssd_8x8_mmxext
_x264_mc_copy_w16_mmxext
_x264_mc_copy_w4_mmxext
_x264_mc_copy_w8_mmxext
_x264_pixel_avg_w16_mmxext
_x264_pixel_avg_w4_mmxext
_x264_pixel_avg_w8_mmxext
_predict_16x16_v_mmx
_predict_8x8c_v_mmx
collect2: ld returned 1 exit status
kenobi-x:/Users/r42555/Documents/vlc-0.8.6f r42555$

doing more investigation I saw that those routines exist in the library but not with the preceding underscore.

kenobi-x-010160048249:/Users/r42555/Documents/vlc-0.8.6f r42555$ strings extras/contrib/lib/libx264.a | grep x264  _x264_frame_filter_x264_frame_init_lowres
_x264_mc_init
_x264_predict_16x16_init
_x264_predict_4x4_init
_x264_predict_8x8_init
_x264_predict_8x8c_init
_x264_pixel_init
_x264_macroblock_bipred_init
_x264_macroblock_cache_end
_x264_macroblock_cache_init
_x264_macroblock_cache_load
_x264_macroblock_cache_save
_x264_macroblock_slice_init
_x264_mb_dequant_2x2_dc
_x264_mb_dequant_4x4
_x264_mb_dequant_4x4_dc
_x264_mb_dequant_8x8
_x264_mb_load_mv_direct8x8
_x264_mb_mc
_x264_mb_predict_intra4x4_mode
_x264_mb_predict_mv
_x264_mb_predict_mv_16x16
_x264_mb_predict_mv_direct16x16
_x264_mb_predict_mv_pskip
_x264_mb_predict_mv_ref16x16
_x264_mb_predict_non_zero_code
_x264_mb_transform_8x8_allowed
_x264_frame_copy_picture
_x264_frame_deblocking_filter
_x264_frame_delete
_x264_frame_expand_border
_x264_frame_expand_border_filtered
_x264_frame_expand_border_lowres
_x264_frame_new
_x264_dct_init
_x264_cpu_detect
_x264_cpu_restore
_x264_cabac_context_init
_x264_cabac_decode_bypass
_x264_cabac_decode_decision
_x264_cabac_decode_init
_x264_cabac_decode_terminal
_x264_cabac_encode_bypass
_x264_cabac_encode_decision
_x264_cabac_encode_flush
_x264_cabac_encode_init
_x264_cabac_encode_terminal
_x264_cabac_model_get
_x264_cabac_model_init
_x264_cabac_model_update
_x264_free
_x264_log
_x264_malloc
_x264_nal_decode
_x264_nal_encode
_x264_param_default
_x264_picture_alloc
_x264_picture_clean
_x264_realloc
_x264_mdate
_x264_csp_init
_x264_macroblock_analyse
_x264_rc_analyse_slice
_x264_slicetype_analyse
_x264_slicetype_decide
_x264_slicetype_frame_cost
_x264_slicetype_mb_cost
_x264_me_refine_qpel
_x264_me_search_ref
_x264_ratecontrol_delete
_x264_ratecontrol_end
_x264_ratecontrol_mb
_x264_ratecontrol_new
_x264_ratecontrol_qp
_x264_ratecontrol_slice_type
_x264_ratecontrol_start
_x264_pps_init
_x264_pps_write
_x264_sei_version_write
_x264_sps_init
_x264_sps_write
_x264_macroblock_encode
_x264_macroblock_encode_pskip
_x264_macroblock_probe_skip
_x264_mb_encode_i4x4
_x264_mb_encode_i8x8
_x264_cabac_mb_skip
_x264_macroblock_write_cabac
_x264_macroblock_luma_write_cavlc
_x264_macroblock_write_cavlc
_x264_encoder_close
_x264_encoder_encode
_x264_encoder_headers
_x264_encoder_open
_x264_encoder_reconfig
_x264_eval
_x264_mc_mmxext_init
_x264_mc_sse2_init
_x264_add16x16_idct_mmxext
_x264_add8x8_idct_mmxext
_x264_sub16x16_dct_mmxext
_x264_sub8x8_dct_mmxext
_x264_predict_16x16_init_mmxext
_x264_predict_4x4_init_mmxext
_x264_predict_8x8c_init_mmxext
x264_add4x4_idct_mmxext
x264_dct4x4dc_mmxext
x264_idct4x4dc_mmxext
x264_sub4x4_dct_mmxext
x264_cpu_cpuid
x264_cpu_cpuid_test
x264_emms
x264_pixel_sad_16x16_mmxext
x264_pixel_sad_16x8_mmxext
x264_pixel_sad_4x4_mmxext
x264_pixel_sad_4x8_mmxext
x264_pixel_sad_8x16_mmxext
x264_pixel_sad_8x4_mmxext
x264_pixel_sad_8x8_mmxext
x264_pixel_satd_16x16_mmxext
x264_pixel_satd_16x8_mmxext
x264_pixel_satd_4x4_mmxext
x264_pixel_satd_4x8_mmxext
x264_pixel_satd_8x16_mmxext
x264_pixel_satd_8x4_mmxext
x264_pixel_satd_8x8_mmxext
x264_pixel_ssd_16x16_mmxext
x264_pixel_ssd_16x8_mmxext
x264_pixel_ssd_4x4_mmxext
x264_pixel_ssd_4x8_mmxext
x264_pixel_ssd_8x16_mmxext
x264_pixel_ssd_8x4_mmxext
x264_pixel_ssd_8x8_mmxext
x264_mc_chroma_sse
x264_mc_copy_w16_mmxext
x264_mc_copy_w16_sse2
x264_mc_copy_w4_mmxext
x264_mc_copy_w8_mmxext
x264_pixel_avg_w16_mmxext
x264_pixel_avg_w16_sse2
x264_pixel_avg_w4_mmxext
x264_pixel_avg_w8_mmxext
x264_center_filter_mmxext
x264_horizontal_filter_mmxext
x264_2pass.log
x264 [%s]: 
arg in x264_csp_init
x264 - core %d%s - H.264/MPEG-4 AVC codec - Copyleft 2005 - http://www.videolan.org/x264.html
unknown SLICE_TYPE unsupported in x264_macroblock_write_cabac

I have noticed that the assembly files in x264 are generated in elf format, so I try manually to regenerate it in macho format and rebuilt the library, but I'm still facing the same error.

Would somebody be able to help me solving this issue ?

--
Stéphane  Gasparini
------------------- 
Domicile/Home              <:))><
sgasparini at mac.com


More information about the x264-devel mailing list