为了账号安全,请及时绑定邮箱和手机立即绑定

将 Nim 代码静态链接到 Go

将 Nim 代码静态链接到 Go

Go
HUX布斯 2021-11-08 14:39:27
我试图在 Linux 中将一些在 Nim 中创建的代码静态链接到 Go 应用程序中。我已经关注了Nim 后端集成文档和一些在 Go 中链接 C 的文章,但没有让它工作。到目前为止,我在这里...尼姆代码target.nim:proc testnim* {.exportc.} =  echo "In Nim!"我编译它:nim c --app:staticLib --noMain --header target.nim去代码app.go:package main/*#cgo CFLAGS: -I/my/path/to/target/nimcache#cgo CFLAGS: -I/my/path/to/Nim/lib#cgo LDFLAGS: /my/path/to/target/libtarget.a#include "/my/path/to/target/nimcache/target.h"*/import "C"import "fmt"func main() {  fmt.Println("In Go!")  C.NimMain()  C.testnim()}我尝试构建这两个:go buildgo build --ldflags '-extldflags "-static"' app.go这是我得到的:# 命令行参数/my/path/to/target/libtarget.a(stdlib_system.o):在函数‘nimUnloadLibrary’中:stdlib_system.c:(.text+0xe6f0):对`dlclose'的未定义引用/my/path/to/target/libtarget.a(stdlib_system.o):在函数‘nimLoadLibrary’中:stdlib_system.c:(.text+0xe71b):对`dlopen'的未定义引用/my/path/to/target/libtarget.a(stdlib_system.o):在函数‘nimGetProcAddr’中:stdlib_system.c:(.text+0xe750):对`dlsym'的未定义引用collect2: 错误: ld 返回 1 个退出状态所以我错过了一些东西。我正在使用 Go 1.5 和 Nim 0.11.3(开发分支)。任何建议或提示将不胜感激。
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您缺少 libdl 库。添加-ldl到您的 LDFLAGS


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信