首页 > 解决方案 > cgo错误:没有这样的文件或目录#cgo LDFLAGS:-lpam -fPIC

问题描述

我正在尝试构建一个使用 #cgo 的 go 项目,但我一直遇到同样的问题:

./pam.go:36:10: fatal error: security/pam_appl.h: No such file or directory
 #include <security/pam_appl.h>
          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.

这是项目https://github.com/uber/pam-ussh。我只是添加了几行代码供我自己使用,只是一个 http 请求并不复杂。因为我在一个问题中读到它可能来自 go 版本,所以我提到它是 1.14.1。这是使用make文件的错误

/tmp/go-build094518109/b053/pam.cover.go:36:10: fatal error: security/pam_appl.h: No such file or directory
 #cgo LDFLAGS: -lpam -fPIC
          ^~~~~~~~~~~~~~~~     
compilation terminated.

所以在安装 libpam0g-dev 之后我得到了新的错误

/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libpam.so when searching for -lpam
/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libpam.a when searching for -lpam
/usr/bin/ld: cannot find -lpam
collect2: error: ld returned 1 exit status

我的系统:

Linux span-ThinkPad-T490 4.15.0-109-generic #110-Ubuntu SMP Tue Jun 23 02:39:32 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

去版

go version go1.14.4 linux/386

标签: gocgopam

解决方案


推荐阅读