登录
首页 >  Golang >  Go问答

缺少 pthread 在 android ndk 下使用 golang cgo 的问题

来源:stackoverflow

时间:2024-03-07 14:24:27 457浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《缺少 pthread 在 android ndk 下使用 golang cgo 的问题》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我正在尝试使用 go 中的 c 绑定制作 android 可执行文件(不是 apk)。这是我的变量:

set goarch=arm
set goos=linux
set cgo_enabled=1
set cc=c:\ndk\bin\arm-linux-androideabi-gcc
set cgo_ldflags=-s -fpie -pie -rdynamic -wall -lstdc++ -lbinder -lutils -landroid_runtime -lbin -linvoke
go build main.go

但是,当我尝试使用上面的设置编译它时,它给出了:

# runtime/cgo
c:/ndk/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot find -lpthread
collect2.exe: error: ld returned 1 exit status

在阅读了一些有关 android 上的 pthread 的内容后,它说 android 中不存在 pthread lib。如何克服这个问题?谢谢。


正确答案


android 没有 libpthread,但 libc 包含部分 pthread 实现。您可以使用 goos=android 来使用正确的 ld 标志构建应用程序。

我在尝试在针对 armv7 的 386 容器上编译 golang 代码时遇到了同样的问题;

nobody@8b66fe311370:/berrymuch/ports-golang/hello-world$ env | egrep "^QNX|^GO"
QNX_TARGET=/root/bbndk/target_10_3_1_995/qnx6
QNX_HOST=/root/bbndk/host_10_3_1_12/linux/x86
GOARCH=arm
GOARM=7
QNX_CONFIGURATION=/tmp/.rim/bbndk
GOOS=android
nobody@8b66fe311370:/berrymuch/ports-golang/hello-world$ go build
# runtime/cgo
arm-unknown-nto-qnx8.0.0eabi-gcc-4.6.3: error: unrecognized option '-pthread'
nobody@8b66fe311370:/berrymuch/ports-golang/hello-world$

有什么提示吗?

今天关于《缺少 pthread 在 android ndk 下使用 golang cgo 的问题》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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