如何在Golang中为LDFLAGS使用相对路径

我的履历表:

我正在尝试构建一个使用静态lib(.a文件)的golang程序

我的项目的目录结构如下

└─testserver
    ├─bin
    ├─pkg
    └─src
        ├─logging
        └─testserver
            ├─libtest.a
            └─test.go

test.go中cgo的标志如下

// #cgo LDFLAGS: -L /home/test/testserver/src/testserver -ltest
// #include "test.h"
import "C"

当我为LDFLAGS -L使用绝对路径时,它可以正常工作,但是当我将路径更改为相对路径时,例如

// #cgo LDFLAGS: -L ./testserver -ltest

然后运行命令

go install testserver

它向我返回错误,并说“找不到-ltest”

我的问题是如何在LDFLAGS中使用相对路径?,这样我就可以在任何路径下构建项目。

吉姆:

您目前无法。目录在命令建立时间和链接之间更改。现在,您需要链接到绝对路径,或使用CGO_LDFLAGS环境变量。

在go1.4之后有一个提交,它添加了一个${SRCDIR}变量,变量在构建时由包含源文件的目录的绝对路径替换。https://github.com/golang/go/issues/7891这将在go1.5中,您现在可以通过从源代码构建Go来轻松使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章