[vlc-devel] Re: - cross compile problems

Juan Antonio Martinez Navarro juanantonio at dif.um.es
Wed May 10 12:16:29 CEST 2006


Hi Yiannis Yiakoumis,

The problem you have is because when you use arm-linux-ar to join some
objects into a file. Some files aren't included and you have the
definition of the methods in that file but you don't have the
implementation of them.

To solve the problem, i make an script. The script adds those files that
you need with arm-linux-ar.

What you have to do is the next.

You have to find where is the implementation of the method undefined.
You have to go to the directory where you compile
liblibmpeg2_a-libmpeg2.o.

Remove it, and type make.

You will see how it builds liblibmpeg2_a-libmpeg2.o.

Copy the line where appears arm-linux-ar and add the object of the
implementation of the method. And after that you have to type the other
command, arm-linux-ranlib ...

I send you the script I've made. I hope you find it useful.



El mié, 10-05-2006 a las 13:02 +0300, Yiannis Yiakoumis escribió:
> Hey everybody, 
> 
> Once again I have problems when cross-compiling vlc for arm. It seems that some libraries do not include specific definitions, and I cannot understand why.
> I get a lot of errors. I just post here one case (with file vout_synchro.h), and I hope that if that is fixed, I can go further by myself. 
> 
> lib/libvlc.a(lib_libvlc_a-modules.o)(.text+0xe94): In function `__module_LoadBuiltins':
> : undefined reference to `vlc_entry__opie'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x344): In function `DecodeBlock':
> : undefined reference to `vout_SynchroReset'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x478): In function `DecodeBlock':
> : undefined reference to `vout_SynchroReset'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x4bc): In function `DecodeBlock':
> : undefined reference to `vout_SynchroNewPicture'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x4c4): In function `DecodeBlock':
> : undefined reference to `vout_SynchroDecode'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x4d4): In function `DecodeBlock':
> : undefined reference to `vout_SynchroEnd'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x5a8): In function `DecodeBlock':
> : undefined reference to `__vout_SynchroInit'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x5b8): In function `DecodeBlock':
> : undefined reference to `vout_SynchroRelease'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x6a0): In function `DecodeBlock':
> : undefined reference to `vout_SynchroNewPicture'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x704): In function `DecodeBlock':
> : undefined reference to `vout_SynchroChoose'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x730): In function `DecodeBlock':
> : undefined reference to `vout_SynchroDecode'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x778): In function `DecodeBlock':
> : undefined reference to `vout_SynchroTrash'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x7fc): In function `DecodeBlock':
> : undefined reference to `vout_SynchroNewPicture'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x804): In function `DecodeBlock':
> : undefined reference to `vout_SynchroDecode'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x814): In function `DecodeBlock':
> : undefined reference to `vout_SynchroEnd'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x870): In function `DecodeBlock':
> : undefined reference to `vout_SynchroNewPicture'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x884): In function `DecodeBlock':
> : undefined reference to `vout_SynchroTrash'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x890): In function `DecodeBlock':
> : undefined reference to `vout_SynchroDecode'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x98c): In function `DecodeBlock':
> : undefined reference to `vout_SynchroEnd'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0x9a8): In function `DecodeBlock':
> : undefined reference to `vout_SynchroDate'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0xb4c): In function `DecodeBlock':
> : undefined reference to `vout_SynchroNewPicture'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0xb54): In function `DecodeBlock':
> : undefined reference to `vout_SynchroDecode'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0xb64): In function `DecodeBlock':
> : undefined reference to `vout_SynchroEnd'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0xb6c): In function `DecodeBlock':
> : undefined reference to `vout_SynchroReset'
> /modules/codec/liblibmpeg2.a(liblibmpeg2_a-libmpeg2.o)(.text+0xfc0): In function `CloseDecoder':
> : undefined reference to `vout_SynchroRelease'
> 
> 
> However, in file ./modules/codec/libmpeg2.c file vout_synchro.h is included (which file have all these definitions, in terms of VLC_EXPORT(........).
> 
> I don't have any idea what can cause this error and where to search. 
> Any idea would be really helpful.
> 
> Thanks a lot,
> Yiannis

-- 
Juan Antonio Martínez Navarro <juanantonio at dif.um.es>
Departamento de Ingeniería de la Información y las Comunicaciones
Facultad de Informática
Universidad de Murcia
Teléfono: +34-968-367938
-------------- next part --------------
echo Going to ./modules/codec FOR liblibmpeg2.a
# For ./modules/codec/liblibmpeg2.a
# We need lib_libvlc_a-vout_synchro.o
cd ./modules/codec/
arm-linux-ar cru liblibmpeg2.a liblibmpeg2_a-libmpeg2.o ../../src/video_output/lib_libvlc_a-vout_synchro.o
arm-linux-ranlib liblibmpeg2.a
cd ../../

echo Going to ./modules/demux/mp4 FOR libmp4.a
# For ./modules/demux/mp4/libmp4.a
# We need drms.c -> libmp4_a-drms.o; ./src/misc/md5.c -> ./src/misc/lib_libvlc_a-md5.o
cd ./modules/demux/mp4
arm-linux-ar cru libmp4.a libmp4_a-mp4.o libmp4_a-libmp4.o libmp4_a-drms.o ../../../src/misc/lib_libvlc_a-md5.o
arm-linux-ranlib libmp4.a
cd ../../../

echo Going to ./modules/demux/playlist FOR libplaylist.a
# For ./modules/demux/playlist/libplaylist.a
# We need src/misc/lib_libvlc_a-unicode.o src/misc/lib_libvlc_a-xml.o
cd ./modules/demux/playlist
arm-linux-ar cru libplaylist.a libplaylist_a-playlist.o libplaylist_a-old.o libplaylist_a-m3u.o libplaylist_a-b4s.o libplaylist_a-pls.o libplaylist_a-dvb.o ../../../src/misc/lib_libvlc_a-unicode.o ../../../src/misc/lib_libvlc_a-xml.o
arm-linux-ranlib libplaylist.a 
cd ../../../

echo Going to  ./modules/access FOR libaccess_http.a
# For ./modules/access/libaccess_http.a
# src/misc/lib_libvlc_a-tls.o
cd ./modules/access
arm-linux-ar cru libaccess_http.a libaccess_http_a-http.o ../../src/misc/lib_libvlc_a-tls.o 
arm-linux-ranlib libaccess_http.a
cd ../../

echo Going to ./modules/access_filter FOR libaccess_filter_record.a
# FOR ./modules/access_filter/libaccess_filter_record.a
# src/video_output/lib_libvlc_a-video_text.o
cd ./modules/access_filter/
arm-linux-ar cru libaccess_filter_record.a libaccess_filter_record_a-record.o ../../src/video_output/lib_libvlc_a-video_text.o
arm-linux-ranlib libaccess_filter_record.a
cd ../../

echo Going to  ./modules/control FOR librc.a
# FOR ./modules/control/librc.a
# src/osd/lib_libvlc_a-osd.o src/osd/lib_libvlc_a-osd_parser.o
cd ./modules/control/
arm-linux-ar cru librc.a librc_a-rc.o ../../src/osd/lib_libvlc_a-osd.o ../../src/osd/lib_libvlc_a-osd_parser.o
arm-linux-ranlib librc.a
cd ../../

echo Going to ./modules/control FOR libtelnet.a
# FOR ./modules/control/libtelnet.a
# src/misc/lib_libvlc_a-vlm.o
cd ./modules/control/
arm-linux-ar cru libtelnet.a libtelnet_a-telnet.o ../../src/misc/lib_libvlc_a-vlm.o
arm-linux-ranlib libtelnet.a

echo Going to ./modules/control FOR libhotkeys.a
# FOR ./modules/control/libhotkeys.a
# src/video_output/lib_libvlc_a-video_widgets.o src/osd/lib_libvlc_a-osd_widgets.o
arm-linux-ar cru libhotkeys.a libhotkeys_a-hotkeys.o ../../src/video_output/lib_libvlc_a-video_widgets.o ../../src/osd/lib_libvlc_a-osd_widgets.o
arm-linux-ranlib libhotkeys.a
cd ../../

echo Going to ./modules/access_output FOR libaccess_output_http.a
# FOR ./modules/access_output/libaccess_output_http.a
# src/misc/lib_libvlc_a-httpd.o src/stream_output/lib_libvlc_a-acl.o
cd ./modules/access_output
arm-linux-ar cru libaccess_output_http.a libaccess_output_http_a-http.o libaccess_output_http_a-bonjour.o ../../src/misc/lib_libvlc_a-httpd.o ../../src/stream_output/lib_libvlc_a-acl.o
arm-linux-ranlib libaccess_output_http.a
cd ../../

echo Going to /home/dsl/Sources/ffmpeg-20051126/libavcodec FOR libavcodec.a
# FOR /home/dsl/Sources/ffmpeg-20051126/libavcodec/libavcodec.a
# comentamos de la linea 154 a la 159 y de la 343 a la 348 del fichero allcodecs.c

echo Going to  /home/dsl/Sources/mpeg2dec-0.4.1-cvs/libmpeg2/ FOR .libs/libmpeg2.a
# FOR /home/dsl/Sources/mpeg2dec-0.4.1-cvs/libmpeg2/.libs/libmpeg2.a
#libmpeg2/libmpeg2arch_la-cpu_accel.o libmpeg2/libmpeg2arch_la-cpu_state.o
cd /home/dsl/Sources/mpeg2dec-0.4.1-cvs/libmpeg2/
arm-linux-ar cru .libs/libmpeg2.a  alloc.o header.o decode.o slice.o motion_comp.o idct.o libmpeg2arch_la-cpu_accel.o libmpeg2arch_la-cpu_state.o
arm-linux-ranlib .libs/libmpeg2.a
cd ../../vlc-0.8.4a

echo Running make
ipkg/rules.zaurus 2> logMakeErr


More information about the vlc-devel mailing list