【问题标题】:Can I use libtool output in cgo?我可以在 cgo 中使用 libtool 输出吗?
【发布时间】:2023-03-21 08:35:01
【问题描述】:

我调用的是从 c++ 源代码编译的静态库。但是写依赖库很累,我发现libtool做得很好,例如,我的libfoo.la会有这样的东西:

dependency_libs=‘ /Users/roger/example/lib/bar/libbar.la -lm’

现在我在 golang 中调用libfoo.a,但是依赖关系可能很复杂。 libfoo.a取决于libbar.alibbar.a 取决于libhaha.a我可以在构建 golang 时使用 libfoo.la 吗?(或者以某种方式将 libfoo.a 及其所有依赖项放入一个 lib 文件中?)

【问题讨论】:

    标签: go static-libraries dependency-management libtool


    【解决方案1】:

    我在构建 golang 时可以使用 libfoo.la 吗?

    没有。 Go 有自己的构建系统,它不知道 libtool 档案,只知道系统上可用的标准静态/共享库。

    现在我在 golang 中调用 libfoo.a,但是依赖关系可能很复杂。

    静态库就是这样。这是改用共享库的原因之一。共享库在 Go 中也不是没有问题的,但在某种程度上是易于管理的。

    libfoo.a 依赖于 libbar.a ,libbar.a 依赖于 libhaha.a。

    不是这样的:

    package foo
    
    
    // #cgo CFLAGS: -I...
    // #cgo LDFLAGS: -L... -lfoo -lbar -lhaha -lm
    // #include ...
    import "C"
    ...
    

    工作?

    或者以某种方式将 libfoo.a 及其所有依赖项放入一个 lib 文件中?

    是的,这是可能的,但另一个问题。

    【讨论】:

      猜你喜欢
      • 2012-07-09
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多