Flutter for Linux安装,配置和运行

国产信创产业发展的如火如荼, 市场上对Linux系统软件和应用软件的需求越来越强烈, Flutter作为跨平台开发中重要的力量, 对Linux环境开发的运行和支持是至关重要的。

Flutter在Linux下运行需要一些依赖软件和工具, 怎么进行软件下载, 所以我们需要先了解Liunx常见软件包下载方式

Linux软件包安装方式

不同的Linux系统版本使用不同的软件包安装工具

  • wget

相似于迅雷,是一种跨平台下载工具,支持HTTP、HTTPS、FTP协议下载,并可使用HTTP代理,支持断点续传

less 复制代码
wget [选项]... [URL]...
 
wget http://llvm.org/clang.zip 
  • RPM RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。
diff 复制代码
rpm -ivh clang.rpm

-i, --install	安装一个包
-v	显示更详细的信息
-h	打印 #,显示安装进度
  • apt-get

ubuntu, deepin下的一个软件安装方式,它是基于debain。适用于deb包安装管理,

arduino 复制代码
apt-get install clang				// 安装指定的包
  • yum

redhat、centos下的软件安装方式,它是基于Linux的php

Yellow dog Updater, Modified的简称, 基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

Flutter for Linux依赖工具

Flutter在 Linux 环境运行依赖如下工具和库。

  1. Clang(编译链接)
  2. CMake + Ninja(构建项目)
  3. git(版本管理)
  4. GTK development(桌面GUI开发)
  5. pkg-config(链接工具)
  6. liblzma(依赖库)
  7. libstdc++(依赖库)

一键安装

arduino 复制代码
sudo apt-get install clang cmake git ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev

1. Clang(编译工具)

clang是LLVM编译器工具集的一个用于编译C、C++、Objective-C的前端。LLVM项目的目标是提供一个gcc的替代品,由苹果公司的赞助开发

官网

arduino 复制代码
http://llvm.org/releases/

2. CMake

因为cmake 的功能强悍而灵活, 很多大型 C/C++ 工程纷纷转到了 cmake 环境下,cmake 在设计之初的目标就是奔着用于对程序构建过程进行管理,它会自动对工程生成相应的 makefile 和其它辅助构建信息。

使用平台无关CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Linux/Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到Write once, run everywhere

3. Ninja build

Ninja 是Google的一名程序员推出的注重速度的构建工具Ninja 是一个专注于速度的小型构建系统。其脚本文件后缀为 .ninja 很多大型项目(例如PyTorch)都采用了ninja作为构建系统的一部分。

ninja支持并行编译和增量编译 ninja + CMake 组合是大型跨平台项目的首选构建方案

4. git(代码管理工具)

代码管理工具,不用多介绍了,程序员必备

用于切换Flutter不同版本和分支的

5. GTK development(桌面GUI开发)

跨平台的图形用户界面(GUI)工具包, 一个功能强大、设计灵活的通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。并且,GTK也有Windows版本和Mac OS X版。

有两个主要的桌面环境(Xfce 和 GNOME)用 GTK 为用户提供完整的工作环境。

支持C/C++,PHP, Guile,Perl, Python, TOM, Ada95, Objective-C, Free Pascal, and Eiffel等语言

GTK 官网:www.gtk.orgp

6. pkg-config(链接工具)

我们在编译、链接第三方库时候,必须要指定它的头文件和库文件的位置。对于一个比较大的第三方库,头文件和库文件可能比较多的,如果我们一个个手动地写,那将是相当的麻烦的。pkg-config能够把这些头文件和库文件的位置指出来,给编译器使用。主要提供了下面几个功能:

  1. 检查库的版本号。 如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件
  2. 获得编译预处理参数,如宏定义、头文件的位置
  3. 获得链接参数,如库及依赖的其他库的位置,文件名及其他一些链接参数
  4. 自动加入所依赖的其他库的设置

它的文件后缀名是pc, 比如FFMpeg提供的libavcodec.pc文件

makefile 复制代码
prefix=/home/bowen/ffmpeg_build
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include

Name: libavcodec
Description: FFmpeg codec library
Version: 57.38.100
Requires: libswresample >= 2.0.101, libavutil >= 55.22.101
Requires.private:
Conflicts:
Libs: -L${libdir}  -lavcodec -lXv -lX11 -lXext -lxcb -lXau -lXdmcp -lxcb-shm -lxcb -lXau -lXdmcp -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lXau -lXdmcp -lxcb-shape -lxcb -lXau -lXdmcp -lX11 -lasound -L/home/bowen/ffmpeg_build/lib -lx265 -lstdc++ -lm -lrt -ldl -L/home/bowen/ffmpeg_build/lib -lx264 -lpthread -lm -ldl -lfreetype -lz -lpng12 -lass -lfontconfig -lenca -lm -lfribidi -lexpat -lfreetype -lz -lpng12 -lm -llzma -lz -pthread
Libs.private:
Cflags: -I${includedir}

pc文件中已经列出libavcodec.a的所有依赖库 所以,我唯一要做的,就是把这些pc文件的路径,写到PKG_CONFIG_PATH。 我就在/home/chenxf/.bashrc末行添加了

ruby 复制代码
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/bowen/ffmpeg_build/lib/pkgconfig
export PKG_CONFIG_PATH

之后直接配置pkg-config进行链接就可以了

css 复制代码
clang test.c -o test pkg-config libavcodec libavformat libavutil --cflags --libs

Flutter for Linux 配置检查

当相关工具安装好后, 运行 flutter doctor 进行检查

ruby 复制代码
bowen@bowen-PC:~$ flutter doctor -v

[✓] Flutter (Channel stable, 3.19.6, on Deepin 20.9 5.18.17-amd64-desktop-community-hwe, locale zh_CN.UTF-8)
• Flutter version 3.19.6 on channel stable at /home/bowen/Desktop/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 54e66469a9 (3 周前), 2024-04-17 13:08:03 -0700
• Engine revision c4cd48e186
• Dart version 3.3.4
• DevTools version 2.31.1

[✓] Linux toolchain - develop for Linux desktop
• Deepin clang version 13.0.1-+rc3-1~exp1
• cmake version 3.22.1
• ninja version 1.10.1
• pkg-config version 0.29

[✓] Android Studio (version 2023.2)
• Android Studio at /home/bowen/Desktop/android-studio
• Flutter plugin version 79.0.1
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)

[✓] Connected device (1 available)
• Linux (desktop) • linux • linux-x64 • Deepin 20.9 5.18.17-amd64-desktop-community-hwe

Android Studio和Linux toolchanin 都 ok 了

运行

设备选择Linux (desktop) 点击run, 运行Flutter for Linux demo工程

成功运行, 之后就可以愉快的开发Linux项目了

相关推荐
逐·風3 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫4 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
尚梦5 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
GIS程序媛—椰子5 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
毕业设计制作和分享6 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
lqj_本人7 小时前
鸿蒙next选择 Flutter 开发跨平台应用的原因
flutter·华为·harmonyos
清灵xmf8 小时前
在 Vue 中实现与优化轮询技术
前端·javascript·vue·轮询
大佩梨8 小时前
VUE+Vite之环境文件配置及使用环境变量
前端
GDAL8 小时前
npm入门教程1:npm简介
前端·npm·node.js