【问题标题】:cgo doesn't include CXXFLAGScgo 不包括 CXXFLAGS
【发布时间】:2018-12-04 10:00:07
【问题描述】:

我想在 Golang 中调用 C 代码:

// #cgo CFLAGS: -I/usr/include/c++/8.1.1/bits
// #cgo CXXFLAGS: -std=gnu++11
// #include "c++0x_warning.h"
import "C"

但得到错误:

In file included from ./main.go:5:
/usr/include/c++/8.1.1/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

所以 cgo 不使用 CXXFLAGS。我试过-std=c++11,它也不起作用。我做错了什么?

$ go version
go version go1.10.3 linux/amd64

【问题讨论】:

    标签: c++11 go cgo


    【解决方案1】:

    请参考以下 SO 问题:Difference between CPPFLAGS and CXXFLAGS in GNU Make 以确定您在程序上下文中真正需要哪些标志。

    如果你调用的是纯 C 代码(而不是 C++ 代码),我认为你不需要CXX_FLAGS

    CPPFLAGS 应该是 C 预处理器的标志; CXXFLAGS 是 C++ 编译器的标志。

    您可能还想查看您的go env。如果你真的需要这个标志,你可以尝试使用env CGO_CXXFLAGS="-std=c++11" go build <YOUR_CODE>编译你的程序。

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多