go - 如何在 golang 中使用 LDFLAGS 的相对路径

标签 go path relative-path cgo ldflags

我正在尝试构建一个使用静态库(.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 轻松地使用它。

关于go - 如何在 golang 中使用 LDFLAGS 的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28037827/

相关文章:

api - 在 Go 中序列化 API 响应

file - 读取文本文件中的行,排序,然后覆盖文件

go - 如何用空模板覆盖模板 block ?

go - 以编程方式使用 Go-IPFS

file - 尝试使用 lua 遍历 Directory 来列出所有文件

java - 确保路径字符串是有效的 java 路径字符串

java - 部署 java applet 时遇到很多麻烦

path - Cypher查找路径查询

java - 在 Ant 中,如何导入与声明构建文件相关的属性文件

visual-studio-2010 - 如何在通用测试(Visual Studio 2010)的工作目录和摘要结果文件中设置相对路径