cross-compiling gstream for armhf gives Error: selected FPU does not support instruction -- `vmul.f32 q8,q0,q2'
Tim-Philipp Müller
t.i.m at zen.co.uk
Thu Apr 20 08:58:04 UTC 2023
On Wed, 2023-04-19 at 11:28 +0200, Holger Böhnke via gstreamer-devel
wrote:
Hi Holger,
Just a word of caution: the FFmpeg meson port is primarily meant for
development purposes.
We hope it works fine in general of course, but for production use it
might be better to build it using the official upstream build system,
and the meson port is also a few versions behind.
Cheers
Tim
> Hi,
> I try to x-compile gstreamer for an embedded arm (32) device, roughly
> (using the monorepo instead) following this tutorial:
> https://www.collabora.com/news-and-blog/blog/2020/05/15/cross-compiling-with-gst-build-and-gstreamer/
> For some reason it chokes on compiling
> libavutil_arm_float_dsp_neon.S.
> [5/2396] Compiling C object subprojects/FFmpeg/libavutil-
> static.a.p/libavutil_arm_float_dsp_neon.S.o
> FAILED: subprojects/FFmpeg/libavutil-
> static.a.p/libavutil_arm_float_dsp_neon.S.o
> arm-linux-gnueabihf-gcc -Isubprojects/FFmpeg/libavutil-static.a.p -
> Isubprojects/FFmpeg -I../subprojects/FFmpeg -fdiagnostics-
> color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c99 -O2
> -g -D_ISOC99_SOURCE -D_GNU_SOURCE -D_LARGEFILE_SOURCE -DPIC -Wno-
> parentheses -Wno-pointer-sign -Wno-switch -Wno-format-truncation -
> Wno-deprecated-declarations -Wno-unused-function -Wno-maybe-
> uninitialized -Wno-discarded-qualifiers -Wno-unused-variable -Wno-
> bool-operation -Wno-incompatible-pointer-types -Wno-address -
> D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -mthumb -fPIC -pthread -
> DHAVE_AV_CONFIG_H -DBUILDING_avutil -MD -MQ
> subprojects/FFmpeg/libavutil-
> static.a.p/libavutil_arm_float_dsp_neon.S.o -MF
> subprojects/FFmpeg/libavutil-
> static.a.p/libavutil_arm_float_dsp_neon.S.o.d -o
> subprojects/FFmpeg/libavutil-
> static.a.p/libavutil_arm_float_dsp_neon.S.o -c
> ../subprojects/FFmpeg/libavutil/arm/float_dsp_neon.S
> ../subprojects/FFmpeg/libavutil/arm/float_dsp_neon.S: Assembler
> messages:
> ../subprojects/FFmpeg/libavutil/arm/float_dsp_neon.S:29: Error:
> selected FPU does not support instruction -- `vmul.f32 q8,q0,q2'
> ../subprojects/FFmpeg/libavutil/arm/float_dsp_neon.S:30: Error:
> selected FPU does not support instruction -- `vmul.f32 q9,q1,q3'
> ... many more like this
> So apparently the compiler assumes a CPU without neon. If I add the
> appropriate compiler flags manually to the above command it compiles
> the file fine. The question is, how do I tell meson which features my
> cpu has, so the correct compiler flags are passed within the build?
> My guess is that I'm missing out on some banality
> CPU:
> processor : 0
> model name : ARMv7 Processor rev 10 (v7l)
> BogoMIPS : 6.00
> Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls
> vfpd32
> CPU implementer : 0x41
> CPU architecture: 7
> CPU variant : 0x2
> CPU part : 0xc09
> CPU revision : 10
>
> processor : 1
> model name : ARMv7 Processor rev 10 (v7l)
> BogoMIPS : 6.00
> Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls
> vfpd32
> CPU implementer : 0x41
> CPU architecture: 7
> CPU variant : 0x2
> CPU part : 0xc09
> CPU revision : 10
>
> Hardware : Freescale i.MX6 Quad/DualLite (Device Tree)
> Revision : 0000
> Serial : 0000000000000000
>
> My cross compile file is:
> [build_machine]
> system = 'linux'
> cpu_family = 'x86_64'
> cpu = 'x86_64'
> endian = 'little'
>
> [binaries]
> c = ['arm-linux-gnueabihf-gcc']
> cpp = ['arm-linux-gnueabihf-g++']
> ar = ['arm-linux-gnueabihf-ar']
> pkgconfig = 'pkg-config'
> strip = ['arm-linux-gnueabihf-strip']
> cmake = ['false']
> #pkgconfig = ['arm-linux-gnueabihf-pkg-config']
>
> [host_machine]
> system = 'linux'
> cpu_family = 'arm'
> cpu = 'arm'
> endian = 'little'
>
> [properties]
> c_args = []
> cpp_args = []
> objc_args = []
> objcpp_args = []
> c_link_args = ['-L/sysroot/lib', '-Wl,-rpath-link=/sysroot/lib']
> cpp_link_args = ['-L/sysroot/lib', '-Wl,-rpath-link=/sysroot/lib']
> objc_link_args = ['-L/sysroot/lib', '-Wl,-rpath-link=/sysroot/lib']
> objcpp_link_args = ['-L/sysroot/lib', '-Wl,-rpath-link=/sysroot/lib']
> pkg_config_libdir =
> ['/sysroot/lib/pkgconfig:/sysroot/usr/share/pkgconfig']
> sys_root = '/sysroot/'
> Thanks
> Holger
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20230420/898d2a36/attachment-0001.htm>
More information about the gstreamer-devel
mailing list