Open HidenoriMatsubayashi opened 3 years ago
@Mai-Matsuura Could you try testing on Raspberry Pi4?
Yes, I will try it.
Observations from my devices:
[ERROR][linuxes_window_wayland.cc(627)] Invalid compositor and shell.
Currently I can't verify on my desktop system using RX6800 (main desktop environment - Plasma Wayland). For whatever reason the Dart VM snapshot version doesn't match:
./flutter-drm-backend sample_2/build/linux/x64/release/bundle
amdgpu_device_initialize: amdgpu_query_info(ACCEL_WORKING) failed (-13)
amdgpu: amdgpu_device_initialize failed.
[ERROR][context_egl.h(95)] Failed to create EGL off-screen surface.(eglGetError: EGL_BAD_ALLOC)
[ERROR][linuxes_surface_gl_drm.h(50)] Off-Screen surface is invalid.
[ERROR][native_window_drm.cc(89)] TODO: implement here!!
[ERROR][flutter_linuxes_view.cc(60)] Failed to change surface size.
[ERROR][native_window_drm.cc(311)] Unsupported cursor:
[ERROR][native_window_drm.cc(176)] Could not move the mouse cursor: -13
[ERROR][native_window_drm.cc(130)] Failed to set cursor buffer. (-13)
[FATAL:flutter/runtime/dart_vm_initializer.cc(22)] Error while initializing the Dart VM: Wrong full snapshot version, expected '39a9141bbcc3cae43e6f9f6b7fbaafe3' found 'aac992673ad0e4a5e41716d2a9911c88'
[1] 171859 abort (core dumped) ./flutter-drm-backend sample_2/build/linux/x64/release/bundle
Thank you for your comment.
[FATAL:flutter/runtime/dart_vm_initializer.cc(22)] Error while initializing the Dart VM: Wrong full snapshot version, expected '39a9141bbcc3cae43e6f9f6b7fbaafe3' found 'aac992673ad0e4a5e41716d2a9911c88'
[1] 171859 abort (core dumped) ./flutter-drm-backend sample_2/build/linux/x64/release/bundle
The first problem is that the Flutter SDK and Engine (libflutter_engine.so
) versions don't match. Could you re-build Flutter Engine (libflutter_engine.so) with the same version using in the Flutter SDK you are using? Flutter SDK specifies the version of Flutter Engine in ${INSTALL_PATH}/bin/internal/engine.version
.
But I need to update README.
Thank you for the information! This makes it a lot easier to verify if the correct versions are in use.
The issue on my x64 machine could lie somewhere else as the versions are indeed matching :thinking: I will clean and update my setup later today to ensure there are no lingering caches remaining. I've already thoroughly cleaned the Flutter SDK && sample projects but I haven't done the same for the depot_tools
yet.
Update with RK3399 system - PinebookPro running ManjaroARM kernel 5.11.3
&& mesa 20.3.4
using the DRM mode:
tty3
and running the drm mode produces the expected app. The text is visible, the touchpad is functional :+1: Small update towards my experiments on x64 with my Ryzen/RDNA2 machine:
Still experiencing the error with wrong Dart VM version when compiling the libraries (fresh flutter sdk/ depot_tools). What I find even more perplexing is that the exact same setup used on my aarch64 devices works.
When using the debug library from Google's infrastructure, I get the following error when running the wayland client in Weston:
[ERROR:flutter/shell/common/shellcc(103)] Dart Error: Can't load Kernel binary: Invalid kernel binary format version.
The closest Flutter ticket to what I experience appears to be this one: https://github.com/flutter/flutter/issues/64849
Hi, I follow your work regarding flutter and embedded for a while already and I am very happy about it, because I share the same view of Sony regarding flutter and embedded linux! And it's amazing to see it running now on embedded devices..
Now lets come to my test:
I have running a Yocto (master branch for all layers) core-image-base for raspberry-64. I have added all needed dependencies, as well as clang from meta-clang and can successfully build everything and use your flutter-client within weston aswell as the drm-backend directly from within the CLI. Great stuff!
First I was thinking the flutter-client can be used without weston, directly from within CLI, but that was probably more related to my little understanding about it. For now I would say the DRM-Backend is the way to go if you only need a single application for your embedded device and then the wayland and weston stuff can be dropped completely. But of course that's project decision.
However I got some compilation errors due to wrongly set includes when building directly on the Pi. I use clang12 built from meta-clang into the raspberrry image. Error was about unordered_map includes missing in at least one header file (key_event_plugin.h). But building the source cross from yocto didn't throw that error but for my understanding it has to be fixed.
Furthermore I am still a bit unhappy about the fact that we still need GTK+3 to be able to build die Linux-Desktop-App before being able to use it with the embedder. Isn't it the case that we just need to app.so plus the assets from the desktop bundle? But for long term I will integrate everything into my yocto build, I am just waiting to cross compile feature will be enabled.
Another issue I would like to address, which probably more flutter related -> Very HIGH CPU load for Linux Desktop either on x64 with a normal desktop build and as well as on arm64, and of course also with your embedder, 1 rasperry core is always running on 100% when flutter app in running with drm-backend. But that seems a general flutter thing, because I have an old release build of an x64 desktop app here which is not that cpu hungry, as when I rebuild it with the current master branch. I would be interested if i am the only one facing this cpu related problems or at least someone else could confirm that.
So far from my side. I am looking forward to the cross compile feature! If someone can give me a hint how to generate the app.so manually on an x64 (without the needs to wait the related PR to be merged) would also be cool.
@LefixBlue
Thank you for your comments. Those are helpful.
Error was about unordered_map includes missing in at least one header file (key_event_plugin.h).
I fixed that (https://github.com/sony/flutter-embedded-linux/pull/22)
@LefixBlue
In terms of cross-building, I'm going to send a PR to add cross-building support into the Flutter SDK. I'll do it in March.
If someone can give me a hint how to generate the app.so manually on an x64
@HidenoriMatsubayashi Thank you for the link regarding snapshots. I will have a look into it.
@HidenoriMatsubayashi
After reading the provided link I was still unsure where to get the correct gen_snapshot from. But now I just realized that building the engine for arm64 on x64 will produce a gen_snapshot in clang_x64/exe.unstripped folder with simarm64 target. So this one can be used on x64 to "cross-compile" the app.dill to app.so for arm64.
Thanks for your help!
@LefixBlue check #21 for:
First I was thinking the flutter-client can be used without weston, directly from within CLI, but that was probably more related to my little understanding about it.
I agree that side-stepping the GTK app compile will be great once the embedder matures enough :)
Had some fun doing something unconventional tonight by compiling the embedder on MSM8916 device (Wileyfox Swift) with postmarketOS. It resulted in the following errors:
The errors have less to do with the embedder itself and more with Flutter/ Alpine linux.
There are several issues with the method I've use to conduct the attempt on this device tonight:
I will need to prepare a proper setup and try again but thought it would be interesting to share nonetheless.
Some new input from my side as well:
Building the "flutter-weston-dekstop-shell" not succeed in my environment. It already failed on my first attempt directly on the raspberry pi some days ago, but now I retried building it cross with yocto and getting the same result.
in main.cc: config.parser.h not found (i guess because my .pc file for libweston points to /usr/inlclude as include dir but the relevant headers are in /usr/include/libweston-9/libweston)
also in main.cc: 3rd argument of 'weston_config_section_get_bool' shoud be a 'bool-' instead of an 'int-'pointer
Thank you for your report! Actually, Weston is not backward compatible and we are looking for ways to support multiple versions. See also: https://github.com/sony/flutter-embedded-linux/issues/3
@HidenoriMatsubayashi
Havn't noticed #3 yet. Thanks for the information.
No. Thank YOU!
I've tried on i.MX 8M Mini EVK (OS: Zeus, imx-5.4.70-2.3.1.xml), but the embedder with DRM backend didn't work. Wayland backend is no problem.
root@imx8mmevk:~# FLUTTER_DRM_DEVICE=/dev/dri/card1 ./flutter-drm-backend ./bundle/
[ 1] ioctl(DRM_IOCTL_GEM_CLOSE) failed
[ERROR][native_window_drm.cc(42)] Failed to create the compositor surface.
[ERROR][linuxes_window_drm.cc(110)] Failed to create the native window
Wohoo! After some extensive cleanup on my host machine, I've found the offending piece causing me problems with the depot_tools
. As it turns out, I've had a number of remnants of an AUR package - flutter-git that collided with my main Flutter install and was using different version. Whatever unintended referencing was happening there is no more.
So, I can finally confirm - the embedder does work with AMD RX6800 with the open source drivers using both the DRM and wayland clients. Mesa version installed on the x64 system - 20.3.4
.
Note: Unlike with the arm devices I have, for the DRM session there was one card to be targeted - /dev/dri/card0
@HidenoriMatsubayashi
I also had a try on the actual iMX8M-MiniEVK BSP Release (OS: Gatesgarth 5.10.9) with the drm-backend. And unfortunately I got the same result as you mentioned here a while ago (ioctl failed). Is there already an explanation why this error happens? Or is the drm-backend not meant to run on the iMX8M-Platform at all?
We want to support the i.MX8M platform, so we need to investigate this issue. I think i.MX8M supports DRM and actually, Weston which uses the DRM backend works on i.MX8M mini. I'll investigate this week. Please tell me more if you have any information.
I am unfortunately not that deep into all these graphical backend stuff..
The only thing I observed today is that I ran into the same build-error like someone reported in #30 while building the drm-backend cross with yocto. You mentioned in #30 that the WL_EGL_PLATFORM
define would be missing, but that didn't worked for me because in the drm-backend case we dealing with gbm. To get around the build-errors I finally (after try many different other things) tried to cast the relevant parameter in the calls eglCreateWindowSurface
and eglGetDisplay
to EGLNativeWindowType
. It did build through then, but the result at runtime is that ioctl error.
No idea if that helps.
To get around the build-errors I finally (after try many different other things) tried to cast the relevant parameter in the calls eglCreateWindowSurface and eglGetDisplay to EGLNativeWindowType
If it's a bug, I'd like to fix it. Now, we are preparing yocto recipe examples.
In terms of i.mx8m, it looks like it doesn't support GBM_BO_FORMAT_ARGB8888
. Probably I need to fix the code.
@HidenoriMatsubayashi
Please note the build-errors I mentioned in my last comment here in this thread regarding cross build drm-gbm-backend with yocto when not hard casting the problematic parameters to EGLNativeWindowType for iMX8M-Mini-EVK.
I use the actual Yocto iMX8M-MiniEVK BSP Release (OS: Gatesgarth 5.10.9) (Distro: fsl-imx-wayland):
| src/flutter/shell/platform/linux_embedded/window/native_window_drm_gbm.cc:43:13: error: incompatible pointer types assigning to 'EGLNativeWindowType' (aka 'wl_egl_window *') from 'struct gbm_surface *' | window_ = gbm_surface_create(gbm_device_, drm_mode_info_.hdisplay, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | src/flutter/shell/platform/linux_embedded/window/native_window_drm_gbm.cc:72:32: error: static_cast from 'EGLNativeWindowType' (aka 'wl_egl_window *') to 'gbm_surface *', which are not related by inheritance, is not allowed | gbm_surface_release_buffer(static_cast<gbm_surface*>(window_), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | recipe-sysroot/usr/include/gbm.h:47:8: note: 'gbm_surface' is incomplete | struct gbm_surface; | ^ | recipe-sysroot/usr/include/EGL/eglplatform.h:96:16: note: 'wl_egl_window' is incomplete | typedef struct wl_egl_window *EGLNativeWindowType; | ^ | src/flutter/shell/platform/linux_embedded/window/native_window_drm_gbm.cc:74:25: error: static_cast from 'EGLNativeWindowType' (aka 'wl_egl_window *') to 'gbm_surface *', which are not related by inheritance, is not allowed | gbm_surface_destroy(static_cast<gbm_surface*>(window_)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | recipe-sysroot/usr/include/gbm.h:47:8: note: 'gbm_surface' is incomplete | struct gbm_surface; | ^ | recipe-sysroot/usr/include/EGL/eglplatform.h:96:16: note: 'wl_egl_window' is incomplete | typedef struct wl_egl_window *EGLNativeWindowType; | ^ | src/flutter/shell/platform/linux_embedded/window/native_window_drm_gbm.cc:140:44: error: static_cast from 'EGLNativeWindowType' (aka 'wl_egl_window *') to 'gbm_surface *', which are not related by inheritance, is not allowed | auto* bo = gbm_surface_lock_front_buffer(static_cast<gbm_surface*>(window_)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | recipe-sysroot/usr/include/gbm.h:47:8: note: 'gbm_surface' is incomplete | struct gbm_surface; | ^ | recipe-sysroot/usr/include/EGL/eglplatform.h:96:16: note: 'wl_egl_window' is incomplete | typedef struct wl_egl_window *EGLNativeWindowType; | ^ | src/flutter/shell/platform/linux_embedded/window/native_window_drm_gbm.cc:159:32: error: static_cast from 'EGLNativeWindowType' (aka 'wl_egl_window *') to 'gbm_surface *', which are not related by inheritance, is not allowed | gbm_surface_release_buffer(static_cast<gbm_surface*>(window_), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | recipe-sysroot/usr/include/gbm.h:47:8: note: 'gbm_surface' is incomplete | struct gbm_surface; | ^ | recipe-sysroot/usr/include/EGL/eglplatform.h:96:16: note: 'wl_egl_window' is incomplete | typedef struct wl_egl_window *EGLNativeWindowType; | ^ | In file included from src/flutter/shell/platform/linux_embedded/window/native_window_drm_gbm.cc:5: | In file included from src/flutter/shell/platform/linux_embedded/window/native_window_drm_gbm.h:14: | In file included from src/flutter/shell/platform/linux_embedded/window/native_window_drm.h:12: | In file included from src/flutter/shell/platform/linux_embedded/surface/linuxes_surface_gl.h:8: | In file included from recipe-sysroot/usr/lib//aarch64-poky-linux/10.2.0/../../../include/c++/10.2.0/memory:83: | recipe-sysroot/usr/lib//aarch64-poky-linux/10.2.0/../../../include/c++/10.2.0/bits/unique_ptr.h:962:34: error: no matching constructor for initialization of 'flutter::EnvironmentEgl' | { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); } | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | src/flutter/shell/platform/linux_embedded/window/native_window_drm_gbm.cc:136:12: note: in instantiation of function template specialization 'std::make_unique<flutter::EnvironmentEgl, gbm_device *&>' requested here | std::make_unique<EnvironmentEgl>(gbm_device_))); | ^ | src/flutter/shell/platform/linux_embedded/surface/environment_egl.h:15:7: note: candidate constructor (the implicit copy constructor) not viable: cannot convert argument of incomplete type 'gbm_device *' to 'const flutter::EnvironmentEgl' for 1st argument | class EnvironmentEgl { | ^ | src/flutter/shell/platform/linux_embedded/surface/environment_egl.h:17:3: note: candidate constructor not viable: cannot convert argument of incomplete type 'gbm_device *' to 'EGLNativeDisplayType' (aka 'wl_display *') for 1st argument | EnvironmentEgl(EGLNativeDisplayType platform_display) | ^ | src/flutter/shell/platform/linux_embedded/surface/environment_egl.h:29:3: note: candidate constructor not viable: requires 0 arguments, but 1 was provided | EnvironmentEgl() : display_(EGL_NO_DISPLAY), valid_(false) {} | ^ | 6 errors generated.
@LefixBlue
I'll try to cross-build using the SDK (toolchain) which is generated by Yocto for iMX8M-MiniEVK BSP Release.
@LefixBlue Could you inform me of the manifest version you are using? imx-5.10.9-1.0.0.xml?
@HidenoriMatsubayashi
I am using imx-5.10.9-1.0.0.xml
They recently "upgraded" the BSP, see:
https://www.nxp.com/docs/en/user-guide/IMX_YOCTO_PROJECT_USERS_GUIDE.pdf
But I have to say that i used my own yocto recipe to build the drm-backend as I already started using your project before you integrated the yocto-recipes into the repository. So it could be a source of failure from my side. Even the recipes look more or less the same. At least I have cross checked the DEPENDS variable today.
Thanks. No problem. I'll do that from now.
@HidenoriMatsubayashi
Should the eglstream-backend also run on the i.MX8M-Mini-EVK?
Because I can build that backend successfully with the imx-5.10.9-1.0.0.xml BSP
But it fails with a segmentation fault at runtime:
$>FLUTTER_DRM_DEVICE=/dev/dri/card1 flutter-drm-eglstream-backend bundle
[ERROR][environment_egl_drm_eglstream.cc(15)] Failed to set extension function pointers
[ERROR][context_egl.cc(31)] Failed to choose EGL surface config: eglGetError: EGL_BAD_DISPLAY
[ERROR][context_egl_drm_eglstream.cc(20)] Failed to set extension function pointers
Should the eglstream-backend also run on the i.MX8M-Mini-EVK?
No, I don't think EGLStream works on i.MX8M platforms. Because EGLStream is basically supported on NVIDIA devices only. NXP supports GBM.
Thanks for clarification.
@LefixBlue I got the same error, too. But it seems that the cause is that EGL library is built for Wayland (-DWL_EGL_PLATFORM
is added). So, we cannot build for DRM-GBM backend if we use fsl-imx-wayland DESTRO. Unfortunately, i.mx8m seems to support only Wayland + EGL. We need EGL + GBM instead of Wayland if we want to use DRM-GBM backend.
https://www.nxp.com/docs/en/user-guide/IMX_YOCTO_PROJECT_USERS_GUIDE.pdf
Here are the list of DISTRO configurations. Note that fsl-imx-fb is not supported on i.MX 8 and fsl-imx-x11 is not
supported anymore.
• fsl-imx-wayland - Wayland weston graphics.
• fsl-imx-xwayland - Wayland graphics and X11. X11 applications using EGL are not supported.
• fsl-imx-fb - Frame Buffer graphics - no X11 or Wayland. Frame Buffer is not supported on i.MX 8
In conclusion, I'm afraid we can't run Flutter with drm-gbm backend on i.mx8m platforms. We need to use Wayland backend on i.mx8m platforms.
@HidenoriMatsubayashi
Interesting news. I somehow had the feeling already that it may not be possible to run the drm-backend on i.MX8 platform. I just couldn't fiddle it out that clearly by myself, as I am still new and learning about all those graphical libraries and backend stuff. I am happy to know about that fact though!
It leads me to one more question:
Using the Wayland-backend always implies a running weston- or any other wayland compositor-instance, right?
So there is always a wayland compositor running and on top of that the flutter-wayland-client is running. At least that's my basic understanding.
That was actually the main reason why I thought using the drm-backend will be my way to go when only need a simple fullscreen app running on a system. Even though from a user-perspective it is no difference when running the flutter-app full-screen on top of a weston for example.
I will try to play around with the i.MX8 and flutter-wayland-client as soon as I have some free time.
Using the Wayland-backend always implies a running weston- or any other wayland compositor-instance, right?
So there is always a wayland compositor running and on top of that the flutter-wayland-client is running. At least that's my basic understanding.
That was actually the main reason why I thought using the drm-backend will be my way to go when only need a simple fullscreen app running on a system. Even though from a user-perspective it is no difference when running the flutter-app full-screen on top of a weston for example.
Exactly. UI in embedded systems sometimes doesn't require a window manager like weston. DRM backend is prepared for that case.
I will try to play around with the i.MX8 and flutter-wayland-client as soon as I have some free time.
Thank you. If you have any questions please please comment.
@HidenoriMatsubayashi
Yesterday I have successfully tried to flutter-deskop-shell (weston) on i.IMX8M-Mini-EVK with imx-5.10.9-1.0.0.xml BSP.
You ever mentioned in another comment weston wouldn't be backward compatible and I also noticed #94. However the only issue I came over while building the weston-desktop-shell against weston9 is an unresolved include which I could fix with this diff:
`diff --git a/examples/flutter-weston-desktop-shell/main.cc b/examples/flutter-weston-desktop-shell/main.cc index db81ea9..2884ffa 100644 --- a/examples/flutter-weston-desktop-shell/main.cc +++ b/examples/flutter-weston-desktop-shell/main.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file.
-#include
This is just my quick fix for testing. I am not sure how to fix it for different weston versions. libweston-9.pc file points to /usr/include/libweston-9 for INCLUDEs in my case, if that helps something.
At runtime I have no problems using the weston-destop-shell after adjusting the weston.ini file according to the one you have in the config folder.
So I was able to successfully run a flutter app started in fullscreen automatically on top of weston with your flutter-deskop-shell.
@LefixBlue Thank you for your comment.
-#include
+#include <libweston-9/libweston/config-parser.h>
Thank you. But, we've already added pkg-config for libweston in https://github.com/sony/flutter-embedded-linux/blob/master/cmake/package.cmake#L36 to add the path to config-parser.h. I'll confirm that.
However, weston-desktop-shell protocol isn't compatible which means the build would fail or not work correctly depending on weston version, so we need to reconsider the source code. https://github.com/sony/flutter-embedded-linux/issues/3
Here is my results on the i.MX8M-Mini BSP: 5.4.70-2.3.0 Init: SystemD Backend: Wayland Flutter engine version: 610fd039ae48e1c493ff7387a46237a8dc99e949 flutter-embedded-linux version: 9b2c62b1cd351cab8e198bbe3425a23d8a9e8f9b Both debug and release apps are working fine.
Observation:
The Flutter window is not movable in Weston
The bundle folder need to be copied to /usr/bin/. Failing to do so results with the following error: embedder.cc (721): 'FlutterEngineCreateAOTData' returned 'kInvalidArguments'. Invalid ELF path specified. [ERROR][flutter_project_bundle.cc(82)] Failed to load AOT data from: /usr/bin/./bundle/lib/libapp.so [ERROR][flutter_linuxes_engine.cc(152)] Unable to start engine without AOT data. Failed to create view controller.
@topolittle Thank you for your report!
The Flutter window is not movable in Weston
Yes, we need to implement it. See: https://github.com/sony/flutter-embedded-linux/issues/6 But I think it isn't basically required in embedded systems. In addition, a problem is that it is difficult to distinguish whether the mouse operation is handled as an event in the Flutter app or as a window in the Wayland app.
The bundle folder need to be copied to /usr/bin/.
Really?
Window resize and minimize actions would be pretty nice addition for Wayland. Not sure if "close" counts as window action as well (good thing I will be checking other environments today on the PinePhone apart from Plasma Mobile).
I still need to double-check the other "convergent" Flutter example app apart from Gallery to be sure but resize can have it's uses for orientation changes at the very least. Launch parameters to deal with different ppi for scaling could be another.
Some further findings about Alpine/ PostmarketOS:
libflutter_engine.so
it will return the following errors about glibc
:
/usr/bin/ld: libflutter_engine.so: undefined reference to `connect@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pipe@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getaddrinfo@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtod@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `mprotect@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fseeko64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `inotify_init1@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `ftell@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_rwlock_destroy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `memcmp@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `readlinkat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtof_l@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `ioctl@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `wmemset@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__ctype_b_loc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `setlocale@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `lseek64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_cond_wait@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `inotify_rm_watch@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `powf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `ceil@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_condattr_destroy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fseek@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `memcpy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fileno@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__fxstat64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strerror_r@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `utimensat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `floor@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtoll@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strerror@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_cond_init@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `wcslen@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fputc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fprintf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sem_post@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `tan@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fread@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `exp2f@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `malloc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `open64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getifaddrs@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strncpy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `setpriority@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `gmtime_r@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__stack_chk_fail@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__isoc99_sscanf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strftime_l@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `uselocale@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_condattr_init@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sendfile64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `acosf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_setspecific@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strstr@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sprintf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_rwlock_init@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `catclose@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `cosf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__isinff@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_key_create@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sigaddset@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_attr_destroy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strcspn@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `dlopen@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `dlsym@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `log10@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `erff@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_create@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strdup@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fmod@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_mutexattr_settype@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `realpath@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strrchr@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fsync@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_attr_init@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `wait@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `atan@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `faccessat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strspn@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fcntl@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `rand@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `readlink@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strncmp@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `log2f@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `dlclose@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `accept@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sem_destroy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `exit@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `dladdr@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `asin@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__ctype_get_mb_cur_max@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_rwlock_rdlock@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `mmap64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `ftello64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getenv@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `dlerror@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `vfprintf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `stderr@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `isatty@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `inet_ntop@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `gai_strerror@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `readdir64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `stdout@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `memchr@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `unlinkat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_setname_np@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strndup@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `epoll_ctl@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `ungetc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `_setjmp@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `mbsrtowcs@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `setsockopt@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `mbtowc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `tcsetattr@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sem_init@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `posix_memalign@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__isnanf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__cxa_atexit@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__errno_location@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fork@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `environ@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getauxval@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `calloc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `epoll_wait@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_condattr_setclock@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pipe2@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__stack_chk_guard@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `snprintf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fclose@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fopen64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `rewinddir@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `inotify_add_watch@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `timezone@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_cond_broadcast@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `tzset@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getnameinfo@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `write@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strnlen@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtoull@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getsockopt@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `trunc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `timerfd_create@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `puts@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fmodf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_rwlock_unlock@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `inet_pton@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `tanf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strncat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `ferror@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `socket@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getpid@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `ftruncate64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `dup2@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `mbsnrtowcs@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_mutex_destroy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtol@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_mutexattr_init@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__isnan@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `freelocale@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `scalbnf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_getspecific@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sin@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_cond_signal@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_rwlock_wrlock@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `newlocale@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__isoc99_fscanf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `wmemcpy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pread64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fwrite@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sigaction@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `clock_gettime@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `vsnprintf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strcat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `read@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `dup@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strlen@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strchr@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `catopen@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtold_l@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `memset@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `cos@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `renameat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `closedir@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_key_delete@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `wcrtomb@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `mbrtowc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__lxstat64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `catgets@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `syscall@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getpeername@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `shutdown@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `feof@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `cbrtf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sinf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `freeifaddrs@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `freeaddrinfo@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `atan2f@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `munmap@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pow@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `atan2@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `exp@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `_exit@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtoull_l@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fgets@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getcwd@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `symlinkat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strcpy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `epoll_create@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `gethostname@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sigemptyset@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `bzero@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getpagesize@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_sigmask@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_mutexattr_destroy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `qsort@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtoul@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `wcsnrtombs@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `openat64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__isoc99_vsscanf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `bcmp@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `mkdirat@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sem_trywait@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `unlink@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_mutex_trylock@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_cond_timedwait@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_cond_destroy@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sendto@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_attr_getstack@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_mutex_init@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `madvise@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `log@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `longjmp@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `nextafterf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__ctype_tolower_loc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `wmemmove@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtoll_l@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `expf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `realloc@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `listen@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sem_wait@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `vasprintf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `acos@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `round@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__xstat64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `setsid@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `lrintf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strtod_l@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `isxdigit@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sqrt@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `memmove@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `nan@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `perror@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `if_nametoindex@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_attr_setdetachstate@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `recvfrom@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sqrtf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_self@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getrusage@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `gettimeofday@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_mutex_unlock@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `uname@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_once@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `getsockname@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `time@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__fxstatat64@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `abort@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `bind@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `kill@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `chdir@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `localtime_r@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `execvp@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `__isinf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `stdin@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `free@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `sysconf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fdopendir@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `printf@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `fflush@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `timerfd_settime@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_attr_setstacksize@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `opendir@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_mutex_lock@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `nanosleep@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `tcgetattr@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `strcmp@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `close@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_join@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `pthread_getattr_np@GLIBC_2.17'
/usr/bin/ld: libflutter_engine.so: undefined reference to `poll@GLIBC_2.17'
My board is AMLOGIC s905d3 (quad core A55), the system is Linux buildroot (Linux kernel 4.9), and the flutter(wayland) works normally.
@dongzhangsun
My board is AMLOGIC s905d3 (quad core A55), the system is Linux buildroot (Linux kernel 4.9), and the flutter(wayland) works normally.
Did you create a BR-package for the embedder? If so would you share it?
@dongzhangsun
My board is AMLOGIC s905d3 (quad core A55), the system is Linux buildroot (Linux kernel 4.9), and the flutter(wayland) works normally.
Did you create a BR-package for the embedder? If so would you share it?
@dongzhangsun
My board is AMLOGIC s905d3 (quad core A55), the system is Linux buildroot (Linux kernel 4.9), and the flutter(wayland) works normally.
Did you create a BR-package for the embedder? If so would you share it?
@all My setup is imx8mm and running wayland while running flutter example stuck with below error , any inputs ?
$ ./flutter-client -b /home/root/bundle -d [FATAL:flutter/runtime/dart_vm_initializer.cc(22)] Error while initializing the Dart VM: Wrong full snapshot version, expected '659a72e41e3276e882709901c27de33d' found '7a5b240780941844bae88eca5dbaa7b8' Aborted tried reinstalling flutter SDK and cross compiled for arm64 , but no use
Flutter sdk version [✓] Flutter (Channel beta, 2.3.0-24.1.pre, on Ubuntu 20.04.1 LTS 5.8.0-59-generic, locale en_IN) • Flutter version 2.3.0-24.1.pre at /opt/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 615957513e (3 weeks ago), 2021-06-25 09:24:44 -0700 • Engine revision 9d517f475b • Dart version 2.14.0 (build 2.14.0-188.5.beta)
flutter engine version 9d517f475ba1282b619477bde8e708d6a34287cf
regards nagendra
i just tested on pine64 using buildroot to cross compile. for anyone hoping to do the same, this command will probably help you:
flutter-elinux build elinux --target-arch=arm64 \
--target-sysroot=/home/connor/workspace/fhunleth/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot/ \
--system-include-directories=/home/connor/workspace/fhunleth/buildroot/output/host/opt/ext-toolchain/aarch64-buildroot-linux-gnu/include/c++/10.3.0/aarch64-buildroot-linux-gnu/ \
--target-backend-type=gbm \
--debug
I tested on i.MX8M-Mini with the toolchain generated by Yocto. Unfortunately, this doesn’t works.
The Yocto’s toolchain doesn’t put the cross tools (cross-compiler, linker, etc) in the
The toolchain sets the environment variables “CC”, “CXX”, “CLANGCC”, “CLANGCXX” and “LD” to the location of the corresponding cross-tools in
Is there a way to tell flutter-elinux to look for the cross-tools in a specific folder ? Can flutter-elinux make use of the above environment variables ?
A quick update: I managed to make it work by adding the following to my toolchain file 'OEToolchainConfig.cmake':
set ( CMAKE_CXX_COMPILER_WORKS 1 )
set( CMAKE_CXX_COMPILER_TARGET "aarch64-poky-linux" )
Now I am able to cross-compile using flutter-elinux and the SDK generated by Yocto. It still doesn't works because of the bug #70
Hi @topolittle ,
See my comment here: https://github.com/sony/meta-flutter/issues/27
Another way to cross build flutter app with Yocto SDK is to patch flutter-elinux to use the correct compiler triple. I wasn't aware of editing the cmake toolchain file like you mentioned also does the trick. I would prefer to add a cmdline argument to elinux where the compiler-target/triple can be specified for cross building.
Regarding https://github.com/sony/flutter-elinux/issues/70:
As far as I understood the current workaround is to use and copy the correct gen_snapshot
-binary from the flutter-engine build results to elinux. See the wiki here or also my comment mentioned above.
Hi,
Cross compiling with a pure Yocto Poky dunfell SDK fails. The following can be made to reproduce the error. It would be nice with cmdline argument where the compiler prefix could be specified. Alternatively the environment variable CROSS_COMPILE as with other packages if possible.
Build a dunfell Poky SDK: mkdir ~/flutter_tests cd ~/flutter_tests
git clone git://git.yoctoproject.org/poky.git -b dunfell git clone https://github.com/kraj/meta-clang -b dunfell git clone https://github.com/sony/meta-flutter.git source poky/oe-init-build-env build
cat >> conf/local.conf << EOF MACHINE ?= "qemuarm64" CLANGSDK = "1" EOF
bitbake-layers add-layer ../meta-clang bitbake-layers add-layer ../meta-flutter
bitbake core-image-weston -c populate_sdk
tmp/deploy/sdk/poky-glibc-x86_64-core-image-weston-aarch64-qemuarm64-toolchain-3.1.15.sh
Source the SDK . /scratch/opt/poky/3.1.15/environment-setup-aarch64-poky-linux
git clone https://github.com/sony/flutter-elinux.git
export PATH="$PATH:pwd
/flutter-elinux/bin"
flutter-elinux precache
flutter-elinux create exampleapp
cd exampleapp
flutter-elinux build elinux --target-arch=arm64 --target-sysroot=/scratch/opt/poky/3.1.15/sysroots/aarch64-poky-linux/
=====> Linker error since it is the Yocto x86_64 ld that is used and not the cross-build ld.
Modifying the SDK file OEToolchainConfig.cmake to include these two lines does not help. set ( CMAKE_CXX_COMPILER_WORKS 1 ) set( CMAKE_CXX_COMPILER_TARGET "aarch64-poky-linux" )
Editing the flutter-elinux files from aarch64-linux-gnu to aarch64-poky-linux does not help either.
This issue is a memo for testing on different arm devices. I would like to test on a lot of arm devices.
Tested devices
Jetson Nano (OS: Ubuntu 18.04, JetPack)
Raspberry Pi4 (OS: Ubuntu 20) https://github.com/sony/flutter-embedded-linux/issues/9
i.MX 8M Mini EVK (OS: Zeus, imx-5.4.70-2.3.1.xml)
DRM backendNXP doesn't support EGL for GBM.RB5 (OS: Based Ubuntu 18.04)
Wayland backendWeston version is 3.0 and it doesn't support xdg-shell