帮一个开源作者写的,我自己是不懂 golang 的
name: Build
on:
release:
types: [created] # 表示在创建新的 Release 时触发
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install Go 1.20.4
uses: actions/setup-go@v2
with:
go-version: 1.20.4
- uses: actions/checkout@v2
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y build-essential
- name: Build shared library for amd64
run: cd libs_dist && chmod +x * && bash build_amd64_so.sh
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: libs
path: |
libs_dist/*.so
理论上不是说 golang 是支持交叉编译的嘛
# build arm64 so
go env -w GOOS=linux
go env -w GOARCH=arm64
go build -buildmode=c-shared -o requests-go-arm64.so export.go
我在 github 免费的 coderspace 里面测试了一下 amd64 是可以正常构建的,但是 arm 的就没办法 执行会提示
@dnslin ➜ /workspaces/requests/libs_dist (main) $ go env -w GOOS=linux
@dnslin ➜ /workspaces/requests/libs_dist (main) $ go env -w GOARCH=arm64
@dnslin ➜ /workspaces/requests/libs_dist (main) $ go build -buildmode=c-shared -o requests-go-arm64.so export.go
go: no Go source files
如果不支持 一个平台构建其他平台的动态链接库 那我就不用测试了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.