登录
首页 >  Golang >  Go问答

在Android平台上进行交叉编译

来源:stackoverflow

时间:2024-02-24 23:09:24 144浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《在Android平台上进行交叉编译》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

如何从 macos 交叉编译到 android 本机二进制文件。

我读了这篇文章,我必须这样做:

export ndk_root=~/dev/ndk-toolchain
./android-ndk-r10c/build/tools/make-standalone-toolchain.sh --platform=android-16 --install-dir=$ndk_root

export ndk_cc=~/dev/ndk-toolchain/bin/arm-linux-androideabi-gcc
cc_for_target=$ndk_cc goos=android goarch=arm goarm=7 ./make.bash

export ndk_toolchain=~/dev/ndk-toolchain
export cc=$ndk_toolchain/bin/arm-linux-androideabi-gcc
export goroot=~/dev/go
export gopath=`pwd`
export goos=android
export goarch=arm
export goarm=7
export cgo_enabled=1

go="$goroot/bin/go"

$go build -x main.go

我从 android studio 安装了 ndk,但找不到提到的路径 /dev/ndk-toolchain/bin/arm-linux-androideabi-gcc

在我的设备中,我:

$ cd /Users/hajsf/Library/Android/sdk/ndk/22.1.7171670/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
$ ls
arm-linux-androideabi   bin         lib         share
$ cd bin
$ ls
arm-linux-androideabi-addr2line arm-linux-androideabi-elfedit   arm-linux-androideabi-nm    arm-linux-androideabi-size
arm-linux-androideabi-ar    arm-linux-androideabi-gprof arm-linux-androideabi-objcopy   arm-linux-androideabi-strings
arm-linux-androideabi-as    arm-linux-androideabi-ld    arm-linux-androideabi-objdump   arm-linux-androideabi-strip
arm-linux-androideabi-c++filt   arm-linux-androideabi-ld.bfd    arm-linux-androideabi-ranlib
arm-linux-androideabi-dwp   arm-linux-androideabi-ld.gold   arm-linux-androideabi-readelf
$ 

正确答案


我下载了ndk,解压后发现正确的路径为:

/users/hajsf/downloads/android-ndk-r21e/toolchains/llvm/prebuilt/darwin-x86_64/bin

并且能够编译为:

$ export ndk=~/downloads/android-ndk-r21e
$ cgo_enabled=1 \
goos=android \
goarch=arm64 \
cc_for_target=$ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang

$ go build -x main.go

this中,有这一行,但它给了我一个错误,没有它,我能够正确编译

./all.bash

不确定这是否正确,我尝试了以下方法,它按照我想要的方式工作。 在我的 mac 中:

$ goos=android goarch=arm64 go build -x main.go

然后我将文件保存在 gdrive 上,然后从我的手机上下载它,然后与 tramux 共享,并将其保存在文件夹 ~/downloads 中,我去了那里并将其设为可执行文件:

$ chmod +x server

然后运行它:

$ ./server

并让它与我一起工作!

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>