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项目了

相关推荐
_AaronWong8 小时前
Electron 实现仿豆包划词取词功能:从 AI 生成到落地踩坑记
前端·javascript·vue.js
cxxcode8 小时前
I/O 多路复用:从浏览器到 Linux 内核
前端
用户5433081441948 小时前
AI 时代,前端逆向的门槛已经低到离谱 — 以 Upwork 为例
前端
JarvanMo8 小时前
Flutter 版本的 material_ui 已经上架 pub.dev 啦!快来抢先体验吧。
前端
恋猫de小郭9 小时前
AI 可以让 WIFI 实现监控室内人体位置和姿态,无需摄像头?
前端·人工智能·ai编程
哀木9 小时前
给自己整一个 claude code,解锁编程新姿势
前端
程序员鱼皮9 小时前
GitHub 关注突破 2w,我总结了 10 个涨星涨粉技巧!
前端·后端·github
UrbanJazzerati9 小时前
Vue3 父子组件通信完全指南
前端·面试
MakeZero9 小时前
Flutter那些事-展示型组件篇
flutter
是一碗螺丝粉9 小时前
5分钟上手LangChain.js:用DeepSeek给你的App加上AI能力
前端·人工智能·langchain