Golang交叉编译到Android上运行

交叉编译

go程序:hello.go

Go 复制代码
package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello Android Golang.")
}

交叉编译

bash 复制代码
CGO_ENABLED=0 GOOS=android GOARCH=arm64 go build -o go_hello hello.go

使用adb传输到android手机上运行

bash 复制代码
# 传输
adb push go_hello /data/local/tmp/

# 执行
adb shell 
cd /data/local/tmp/
./go_hello

android手机上运行结果

查看go编译支持的目标平台

bash 复制代码
% go tool dist list
# 只截取了部分输出
android/386
android/amd64
android/arm
android/arm64

darwin/amd64
darwin/arm64
dragonfly/amd64

ios/amd64
ios/arm64

js/wasm

linux/386
linux/amd64
linux/arm
linux/arm64

cgo交叉编译

Android NDK下载

https://developer.android.com/ndk/downloads?hl=zh-cn

go程序:sum.go

Go 复制代码
package main

/*
#include <stdlib.h>
#include <stdio.h>

int sum(int a, int b) {
    return a + b;
}
*/
import "C"

import (
    "fmt"
)

func main() {
    a := C.int(10)
    b := C.int(20)
    output := C.sum(a, b)
    fmt.Println(output)
}

交叉编译

CGO_ENABLED=1 GOOS=android GOARCH=arm64 CC=~/Downloads/ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android34-clang go build -o go_sum sum.go

bash 复制代码
CGO_ENABLED=1 GOOS=android GOARCH=arm64 CC=~/Downloads/ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android34-clang go build -o go_sum sum.go

传输到手机上运行

bash 复制代码
$ ./go_sum
30

$ file go_sum
go_sum: ELF shared object, 64-bit LSB arm64, dynamic (/system/bin/linker64), for Android 34, built by NDK r27d (13750724), BuildID=6f4238b00874b42ac0a76538c6bb562c03b5c40c, not stripped
相关推荐
my_power5208 分钟前
车载安卓面试题汇总
android
csj5011 分钟前
安卓基础之《(15)—内容提供者(1)在应用之间共享数据》
android
知乎的哥廷根数学学派16 分钟前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
yeziyfx1 小时前
kotlin中 ?:的用法
android·开发语言·kotlin
charlie1145141911 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
古城小栈1 小时前
Rust 网络请求库:reqwest
开发语言·网络·rust
hqwest2 小时前
码上通QT实战12--监控页面04-绘制6个灯珠及开关
开发语言·qt·qpainter·qt事件·stackedwidget
i橡皮擦2 小时前
TheIsle恐龙岛读取游戏基址做插件(C#语言)
开发语言·游戏·c#·恐龙岛·theisle
2501_915918412 小时前
只有 Flutter IPA 文件,通过多工具组合完成有效混淆与保护
android·flutter·ios·小程序·uni-app·iphone·webview
bing.shao2 小时前
golang 做AI任务执行
开发语言·人工智能·golang