警告:未使用的变量“ _cgo_a”

时间:2019-06-17 14:52:03

标签: go cgo

什么是“ _cgo_a”变量?

我正在尝试链接c ++静态库。

greeter.cpp

#include "greeter.h"
#include <iostream>

void
greet()
{
    std::cout << "Greetings\n";
}

greeter.h

#ifndef GREETER_H_
#define GREETER_H_

#ifdef __cplusplus
extern "C" {
#endif

void
greet();

#ifdef __cplusplus
}
#endif

#endif

我将上述内容编译为一个静态库,如下所示:

$ g++ -c greeter.cpp
$ ar vfx greeter.o -o libgreeter.a

这是我的main.go

package main

// #cgo CFLAGS: -g -Wall
// #cgo LDFLAGS: -L. -lgreeter
// #include "greeter.h"
import "C"

func main() {
    C.greet()
}

然后,当我做go build时,我就会得到:

# error
cgo-gcc-prolog: In function ‘_cgo_261f55e693f4_Cfunc_greet’:
cgo-gcc-prolog:46:49: warning: unused variable ‘_cgo_a’ [-Wunused-variable]

我的转到版本:go version go1.12.5 linux/amd64

编辑: 如果从CFLAGS中删除-Wall,则编译正常。 _cgo_a变量仍然是什么,为什么它给我一个错误?

1 个答案:

答案 0 :(得分:2)

请勿在cgo CFLAGS中使用-Wall。这是Go中的普遍问题。在github线程中了解更多信息:https://github.com/golang/go/issues/6883#issuecomment-383800123