创世魂 发表于 2025-5-22 22:08:23

【解决方案】火山服务器编译fyne界面库Linux版

本帖最后由 创世魂 于 2025-5-22 22:35 编辑

CGO介绍:
就是在go语言中调用了c代码,根据相关资料介绍,调用了c代码的go语言无法实现跨平台编译,也就说无法实现在Windows平台上编译linux程序。
当然也不是完全没办法。

方法1:使用WLS(Windows平台下的linux子系统)大白话意思就是,Windows自带的linux虚拟机。
方法2:使用docker好像也可以解决。(暂时没研究出来,如果研究出来了我在出个教程)


下面按照教程一步一步就基本可以实现:

一、安装wsl(已安装可以忽略)

    这里提供了阿里网盘下载地址,https://www.alipan.com/s/bs3tA1m4hYU
   也可以自己去GITHUB下载:https://GITHUB.com/microsoft/WSL/releases

二、打开cmd命令行工具

(这个就很简单了,不介绍具体步骤了)

三、开始输入命令

    输入命令:   
wsl --install -d Ubuntu
      输入上述命令是用来安装linux系统的,安装过程和网络环境和系统处理速度有关系,耐心等待,安装完成会自动启动。这时候会提示你如下内容,意思是让你输入用户名,XXX就是你的linux系统的用户名称,随便输入一个或者用默认的也可以。

Create a default Unix user account:XXX
   按下回车后会提示:

New password:
   这里是让你输入系统密码的,正常输入密码即可,但是输入的密码会自动隐藏,这是正常的。
      继续按下回车会提示:

Retype new password:
   这里让你把密码重新输入一遍,重新输入一下即可。
      继续回车就提示一堆信息,表示系统启动成功之类的。

passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.6.87.1-microsoft-standard-WSL2 x86_64)

* Documentation:https://help.ubuntu.com
* Management:   https://landscape.canonical.com
* Support:      https://ubuntu.com/pro

System information as of Thu May 22 17:30:26 CST 2025

System load:0.0               Processes:             33
Usage of /:   0.1% of 1006.85GB   Users logged in:       0
Memory usage: 3%                  IPv4 address for eth0: 172.21.84.47
Swap usage:   0%


This message is shown once a day. To disable it please create the
/home/XXX/.hushlogin file.
   然后CMD的命令行会变成如下格式:
xxx@xxx:/mnt/c/Users/xx$
   这里你就可以输入一些linux中用的命令行,执行一些linux命令:
      接下来输入以下命令来下载一些编译环境:

   首先输入,这是用来更新系统软件包之类的命令。

sudo apt update && sudo apt upgrade -y
   首次输入命令按下回车后,会提示让你输入密码,你就输入刚才的系统密码就行。

password for xxx: 输入你的密码
   等待上个命令执行完毕后,执行下面的命令,下载一些环境包。

sudo apt install gcc-x86-64-linux-gnu g++-x86-64-linux-gnu -y

      等待下载完毕后继续输入命令行,下载其它的环境。

sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu -y

       等待下载完毕后,下载go语言环境包:

sudo apt install golang -y

       下载完毕后执行,看看go语言是否下载完毕。

go version

   如果下载完毕会提示:go version goXXXX linux/amd64
         继续下载:
   
sudo apt install gcc-x86-64-linux-gnu
特别注意:如果下载失败之类的,可能是代理有问题,更换一下代理地址:
命令:go env -w GOPROXY=https://goproxy.cn,direct



四、打开火山项目

    比如你fyne界面库项目,点击菜单生成活动项目目标代码,双击跳转,打开源码目录。
      

   进入project 文件夹,找到mod文件。

      



      打开网盘中提供的“GO项目模块转Linux.exe”程序文件,
      网盘地址:https://www.alipan.com/s/bs3tA1m4hYU
      打开这个小工具的作用,是将这个go.mod文件里面的路径格式转换为linux系统可以识别的格式,否则无法正常编译。

   提供文件路径后,点击第二个按钮

   

    提示转换成功:

   


五、继续在wls命令行中

输入:
这个命令的作用是进入目录。
如果你的项目源码路径是:G:\Desktop\fyne\_int\fyne\release\project
在命令行中需要提供:/mnt/g/Desktop/fyne/_int/fyne/release/project
完整命令行如下:
cd /mnt/g/Desktop/fyne/_int/fyne/release/project
进入后效果如下:xxx@xxx:/mnt/g/Desktop/fyne/_int/fyne/release/project$
继续调用命令:
export CC=x86_64-linux-gnu-gcc意思是切换编译器

继续调用命令:
myapp-linux就是你的程序名字,自己随便起一个就可以了。
go build -o myapp-linux ./main/s_startup.go开始编译,第一次编译比较慢,耐心等待一下。

编译完毕后,你就会得到一个30多兆的程序文件,这个也没办法,go语言编译出来的就是这么大。。




将其放到比如深度系统,双击就可以打开。








以上是第一次使用:
第二次打开cmd编译的时候:


1、输入命令,启动系统
wsl.exe -d Ubuntu

2、输入命令进入项目路径:
cd G:\Desktop\fyne\_int\fyne\release\project


3、输入命令编译
go build -o myapp-linux ./main/s_startup.go




创世魂 发表于 2025-5-23 10:04:41




常用的编译环境命令行:

sudo apt update

# x86_64 (amd64) → Linux
sudo apt install gcc-x86-64-linux-gnu g++-x86-64-linux-gnu

# ARM64 (aarch64) → Linux
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

# ARMv7 → Linux
sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

# MIPS → Linux
sudo apt install gcc-mips-linux-gnu g++-mips-linux-gnu

# RISC-V 64 → Linux
sudo apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu



常用的切换编译器命令:



export CC=x86_64-linux-gnu-gcc

export CC=aarch64-linux-gnu-gcc

export CC=arm-linux-gnueabihf-gcc

export CC=mips-linux-gnu-gcc






j519948746 发表于 2025-5-22 22:43:19

GO哪都好 就是编译后太大 MIPS架构的elf 啥也没有就是2MB    用MIPS的嵌入式设备 有时候可操作的空间才2-3MB:噜阿噜.
不过总之还得感谢吴老板   不是火山GO我还得靠AI生产C代码来制作elf

绯陌如夏 发表于 2025-5-23 00:15:04

牛的牛的

诗木 发表于 2025-5-23 08:54:06

好好好

创世魂 发表于 2025-5-23 10:06:00

j519948746 发表于 2025-5-22 22:43
GO哪都好 就是编译后太大 MIPS架构的elf 啥也没有就是2MB    用MIPS的嵌入式设备 有时候可操作的空间才2-3M ...
这个没办法,go就是适合开发嵌入式设备。嵌入式还得用c语言来写。
页: [1]
查看完整版本: 【解决方案】火山服务器编译fyne界面库Linux版