GStreamer ARM cross compilation

Soeren Grunewald soeren.grunewald at avionic-design.de
Fri May 17 09:33:35 PDT 2013


Hi Deepak,

Thats what we pass

$ ./configure \
	--build=x86_64-unknown-linux-gnu \
	--host=armv7l-unknown-linux-gnueabihf \
	--prefix=/usr \
	--with-sysroot=/home/build/rootfs/sysroot \
	CPPFLAGS=--sysroot /home/build/rootfs/sysroot \
	CFLAGS=--sysroot /home/build/rootfs/sysroot \
	LDFLAGS=--sysroot /home/build/rootfs/sysroot \
	ac_cv_func_register_printf_specifier=no \
	ac_cv_func_register_printf_function=no


But in general I would suggest to use a cross build system such as 
buildroot [1] or yocto [2]. Accept you just do it for fun and learning.

[1] http://buildroot.uclibc.org/
[2] https://www.yoctoproject.org/


On 05/17/2013 03:17 PM, Deepak Jain wrote:
> Hi,
>
> I am trying to cross compile "gstreamer-1.0.6.tar.gz" package on ARM.
>
> Here is what I did:
>
> (1) Extracted gstreamer-1.0.6.tar.gz
> (2) I already have ARM toolchain in folder toolchain and I already exported
> the path to /toolchain/bin
> (3) I already have ARM cross-compiled glib-2.0, FFI and ICONV with me and
> they are residing in folders glib, FFI and ICONV resp.
>
>
> Now I configure my gstreamer-1.0.6 with following command:
>
> #  ./configure --prefix=/<some_directory> --host=arm-linux-gnueabi
> CFLAGS="-I/glib/Inc/ -I/FFI/include -I/ICONV/Inc"
>
> # make
>
>
> I got following error:
>
> gstutils.h:724:3: warning: right shift count >= width of type [enabled by
> default]
> gstutils.h:724:3: warning: right shift count >= width of type [enabled by
> default]
> gstutils.h:724:3: warning: right shift count >= width of type [enabled by
> default]
> gstutils.h:724:3: warning: right shift count >= width of type [enabled by
> default]
>    CC     libgstreamer_1.0_la-gstallocator.lo
> gstallocator.c:61:8: error: conflicting types for 'gst_memory_alignment'
> ../gst/gstallocator.h:52:18: note: previous declaration of
> 'gst_memory_alignment' was here
> make[4]: *** [libgstreamer_1.0_la-gstallocator.lo] Error 1
> make[4]: Leaving directory `/home/gstreamer-1.0.6/gst'
> make[3]: *** [all-recursive] Error 1
> make[3]: Leaving directory `/home/gstreamer-1.0.6/gst'
> make[2]: *** [all] Error 2
> make[2]: Leaving directory `/home/gstreamer-1.0.6/gst'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/home/gstreamer-1.0.6'
> make: *** [all] Error 2
>
>
>
> Now I changed my configure command to below one:
>
>
> # ./configure --prefix=/<some_directory> --host=arm-linux-gnueabi
> CFLAGS="-I/glib/Inc/ -I/FFI/include -I/ICONV/Inc" GLIB_LIBS="-L/glib/Lib/
> -lgobject-2.0 -lglib-2.0 -lgthread-2.0 -lgmodule-2.0"
> GLIB_ONLY_LIBS="-L/glib/Lib/ -lglib-2.0"
>
>
> # make
>
>
> Still I do not have any success, same above error comes.
>
>
>
> Again I changed my configure command to below one:
>
> # ./configure --prefix=/<some_directory> --host=arm-linux-gnueabi
> CFLAGS="-I/glib/Inc/ -I/FFI/include -I/ICONV/Inc" GLIB_CFLAGS="-I/glib/Inc
> -I/glib/Inc/glib-2.0 -I/glib/Inc/glib-2.0/glib
> -I/glib/Lib/glib-2.0/include" GLIB_LIBS="-L/glib/Lib/ -L/FFI/Lib/
> -L/ICONV//Lib/"
>
> # make
>
> Now I get the following errors:
>
> gst_plugin_scanner-gst-plugin-scanner.o: In function `main':
> /home/gstreamer-1.0.6/libs/gst/helpers/gst-plugin-scanner.c:45: undefined
> reference to `g_malloc'
> /home/gstreamer-1.0.6/libs/gst/helpers/gst-plugin-scanner.c:55: undefined
> reference to `g_free'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_dir_close'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_intern_static_string'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_date_time_unref'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_value_set_static_string'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_object_newv'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_date_time_new_now_utc'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_signal_new'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_value_get_int64'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_build_filename'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_list_delete_link'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_mapped_file_get_contents'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_object_get_property'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_direct_hash'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_main_loop_unref'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_list_append'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_type_value_table_peek'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_initially_unowned_get_type'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_string_sized_new'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_datalist_id_set_data_full'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_list_reverse'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_dir_open'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_queue_init'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_date_time_get_minute'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_string_new'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_slist_length'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_object_class_list_properties'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_once_init_enter'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_object_unref'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_key_file_set_value'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_type_check_value'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_fprintf'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_date_get_year'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_date_get_julian'
> ../../../gst/.libs/libgstreamer-1.0.so: undefined reference to
> `g_array_set_clear_func'
>
>
>
> I am not sure what all flags are required to properly configure GStreamer
> at the beginning.
> On googling, I do not find any conclusive answers to the problems faced by
> many.
>
> Some said you need to set PKG_CONFIG_PATH. But in my case, it do not exist.
>
> Some said you need to set LD_LIBRARY_PATH and not GLIB_CFLAGS or GLIB_LIBS
> but that is also not helping.
>
> If anybody has successfully cross-compiled gstreamer on ARM, kindly let me
> know the correct procedure as the information available on the net is not
> conclusive, it is only confusing:(
>
> Thanks in advance.
>
> Deepak
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>



More information about the gstreamer-devel mailing list