为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
万千封印 2021-09-13 09:48:24
我正在尝试构建一个使用静态库(.a 文件)的 golang 程序我的项目的目录结构如下└─testserver    ├─bin    ├─pkg    └─src        ├─logging        └─testserver            ├─libtest.a            └─test.gotest.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 中使用相对路径?,以便我可以在任何路径中构建项目。
查看完整描述

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

用${SRCDIR}解决相对路径的问题真的非常棒。


另外,${SRCDIR}表示当前 go 文件的绝对路径。使用命令go build -x .检查输出。


$ go build -x .

...

cd /root/sourcecode/src/tcp/aes

CGO_LDFLAGS="-g" "-O2" "-L/root/sourcecode/src/tcp/aes/aes" "-laes" /usr/local/go/pkg/tool/linux_amd64/cgo -objdir $WORK/tcp/aes/_obj/ -importpath tcp/aes -- -I $WORK/tcp/aes/_obj/ aes.go

cd $WORK

...

$ tcp/aes

/usr/bin/ld: cannot find -laes

collect2: error: ld returned 1 exit status

这是错误的,因为 liblibaes.a与 go 文件的位置相同。然后我改变了它,并通过了。


查看完整回答
反对 回复 2021-09-13
  • 2 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信