登录
首页 >  Golang >  Go问答

使用"-Wall"和"-Wl,--dynamic-linker=/system/bin/linker"参数在cgo中设置动态链接器

来源:stackoverflow

时间:2024-03-12 20:45:29 480浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《使用"-Wall"和"-Wl,--dynamic-linker=/system/bin/linker"参数在cgo中设置动态链接器》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

使用arm-linux-gnueabi-gcc进行交叉编译时。 goos仅支持linux,不支持android。

cgo_enabled=1 cgo_cflags cc=arm-linux-gnueabi-gcc goos=linux goarch=arm go build -o hello .
# after build generated hello file
file hello
hello: elf 32-bit lsb executable, arm, eabi5 version 1 (sysv), dynamically linked, interpreter /lib/ld-linux.so.3, buildid[sha1]=038c80350b7a0c9e72b10021c66c31c2dbb4df2c, for gnu/linux 3.2.0, not stripped

如您所见,输出文件 hello 与 动态链接,解释器 /lib/ld-linux.so.3。无法在android平台运行。

./hello
/system/bin/sh: ./hello: No such file or directory

在 android 中,解释器应该是 /system/bin/linker我的问题是如何使用cgo指定动态链接器?

当我在那里搜索时。 gcc 具有类似 gcc -o test test.c -wall -wl,--dynamic-linker=/system/bin/linker 的参数。


正确答案


您可以启用 cgo 并将这些标志从上面的注释 import "c" 语句发送到 cgo:

package main

/*
#cgo LDFLAGS: --dynamic-linker=/lib/ld-linux.so.3
*/
import "C"

func main() {
}

告诉我这是否有效

今天关于《使用"-Wall"和"-Wl,--dynamic-linker=/system/bin/linker"参数在cgo中设置动态链接器》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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