cat*_*mia 7 path relative-path go ldflags cgo
我是Golang的新手,我正在尝试构建一个使用静态库(.a文件)的golang程序
我的项目的目录结构如下
??testserver
??bin
??pkg
??src
??logging
??testserver
??libtest.a
??test.go
Run Code Online (Sandbox Code Playgroud)
test.go中的cgo标志如下
// #cgo LDFLAGS: -L /home/test/testserver/src/testserver -ltest
// #include "test.h"
import "C"
Run Code Online (Sandbox Code Playgroud)
当我使用LDFLAGS -L的绝对路径时,它会产生罚款,但是当我将路径更改为相对路径时,例如
// #cgo LDFLAGS: -L ./testserver -ltest
Run Code Online (Sandbox Code Playgroud)
然后运行该命令
go install testserver
Run Code Online (Sandbox Code Playgroud)
它向我返回一个错误,并说"找不到-ltest"
我的问题是如何在LDFLAGS中使用相对路径?,以便我可以在任何路径上构建项目.谢谢!
你目前不能.目录在构建命令和链接之间发生更改.现在您需要链接到绝对路径,或使用CGO_LDFLAGS
环境变量.
在go1.4之后有一个提交,它添加了一个${SRCDIR}
变量,该变量在构建时被包含源文件的目录的绝对路径替换.https://github.com/golang/go/issues/7891.这将在go1.5中,您现在可以通过从源代码构建Go来轻松使用它.