使用“go build”或“go run main.go”运行时出现“pkcs11.h”问题

问题描述 投票:0回答:1

我正在制作一个使用 PKCS11 的 CGO 代码,在启用 CGO 和一些错误、测试和更正之后,我发现了一个我从未见过的新错误。无论我使用“go build”还是“go run main.go”,错误仍然出现。 有谁知道如何解决吗?

package main

import (
    "fmt"

    "github.com/miekg/pkcs11"
)

func main() {
    p := pkcs11.New("aetpkss1.dll")
    err := p.Initialize()

    if err != nil {
        panic(err)
    }

    defer p.Destroy()
    defer p.Finalize()

    slots, err := p.GetSlotList(true)
    if err != nil {
        panic(err)
    }

    session, err := p.OpenSession(slots[0], pkcs11.CKF_SERIAL_SESSION|pkcs11.CKF_RW_SESSION)
    if err != nil {
        panic(err)
    }
    defer p.CloseSession(session)

    err = p.Login(session, pkcs11.CKU_USER, "1234")
    if err != nil {
        panic(err)
    }
    defer p.Logout(session)

    p.DigestInit(session, []*pkcs11.Mechanism{pkcs11.NewMechanism(pkcs11.CKM_SHA_1, nil)})
    hash, err := p.Digest(session, []byte("this is a string"))
    if err != nil {
        panic(err)
    }

    for _, d := range hash {
        fmt.Printf("%x", d)
    }

    fmt.Println()
}
C:\Users\user\Desktop\Teste2> go run main.go
# runtime/cgo
cc1.exe: error: C:\src\github.com\miekg\pkcs11\pkcs11.h: not a directory [-Werror]
cc1.exe: all warnings being treated as errors
c go cgo pkcs#11
1个回答
0
投票

您需要安装软件包pkcs11,您可以使用此命令

go get -u github.com/miekg/pkcs11

并且您的系统上需要有 aetpkss1.dll PKCS#11 库。并且它位于正确的位置并正确安装。

检查环境变量CGO_ENABLED和CC是否设置正确。您可能需要设置这些变量来指定要使用和启用 CGO 的 C 编译器。例如:

export CGO_ENABLED=1
export CC=gcc
© www.soinside.com 2019 - 2024. All rights reserved.