【问题标题】:Including object files when compiling go编译时包含目标文件
【发布时间】:2019-09-20 02:56:06
【问题描述】:

假设我有一个名为 test.o 的目标文件。它包含对名为 say 的函数的引用。还说我有一些go代码:

func main() {
    say()
}

我可以在编译我的 Golang 源 (go build --include=test.o) 时将目标文件作为参数传入,还是在 Go 源中引用它?

所以问题是:如何从我的 Go 代码中访问存储在 test.o 中的函数?

【问题讨论】:

  • 为什么投反对票?信息不足?

标签: go linker object-files


【解决方案1】:

所以问题是:如何从我的 Go 代码中访问存储在 test.o 中的函数?

你不能。

嗯,你的问题不清楚。如果你有一些 C 代码编译成一些 .o,你可以使用 cgo 并从 go 调用从你的 .o 生成的 .so。阅读有关 cgo 的操作方法。 您可以编译 go 代码,以便它可以在运行时动态加载。这种机制称为插件。所有这些都复杂。最好的建议是:停止尝试并重新设计。您的问题闻起来像 XY 问题。 Go 是从源代码编译的。

【讨论】:

    【解决方案2】:

    所以问题是:如何从我的 Go 代码中访问存储在 test.o 中的函数?

    你可以。

    看看:https://github.com/pkujhd/goloader - 请注意,除非您只是为了自己的乐趣和娱乐而破解某些东西,否则您可能不应该这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 2017-08-25
      相关资源
      最近更新 更多