kyl*_*ton 5 c++ gcc go go-build
我正在尝试构建一个使用用 C 和 C++ 编写的第三方库 (GDAL) 的 go 项目。我遇到了这个错误:
In file included from contour.cpp:31:0:
cpl_port.h:187:6: error: #error Must have C++11 or newer.
# error Must have C++11 or newer.
^
In file included from C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/type_traits:35:0,
from cpl_conv.h:372,
from contour.cpp:39:
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support for the \
^
Run Code Online (Sandbox Code Playgroud)
一些搜索告诉我这是预期的,解决方法是简单地在编译器上设置一个标志(不相关,但仍然相关)。
我已经通读了go 的构建文档,虽然它表明可以为各个编译器指定选项,但它没有明确说明如何操作,也没有提供任何示例。
我尝试了以下只是猜测,虽然 go build 命令接受它们,但它们产生相同的错误,所以它们不起作用。
go build -gcflags -std=gnu++11 -ldflags -std=gnu++11
go build -gcflags -std=c++11 -ldflags -std=c++11
go build -gcflags -std=c++11
go build -gcflags -std=all=gnu++11 -ldflags -std=all=gnu++11
Run Code Online (Sandbox Code Playgroud)
我如何告诉 go 告诉 gcc 使用 C++11 或更高版本进行编译?
编辑:根据 PeterSO 的要求:
H:\>go version
go version go1.10.2 windows/amd64
H:\>go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\ksexton\AppData\Local\go-build
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=H:\ksexton\Go;
set GORACE=
set GOROOT=C:\Go
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\ksexton\AppData\Local\Temp\go-build937852322=/tmp/go-build -gno-record-gcc-switches
H:\>gcc --version
gcc (tdm64-1) 5.1.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
H:\>g++ --version
g++ (tdm64-1) 5.1.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Run Code Online (Sandbox Code Playgroud)
包中的所有 cgo CPPFLAGS 和 CFLAGS 指令都连接起来并用于编译该包中的 C 文件。包中的所有 CPPFLAGS 和 CXXFLAGS 指令都连接起来并用于编译该包中的 C++ 文件。包中的所有 CPPFLAGS 和 FFLAGS 指令都连接起来并用于编译该包中的 Fortran 文件。程序中任何包中的所有 LDFLAGS 指令都会连接起来并在链接时使用。所有 pkg-config 指令都连接起来并同时发送到 pkg-config 以添加到每个适当的命令行标志集。
在 Windows 上:
set CGO_CXXFLAGS=-std=c++11
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3760 次 |
| 最近记录: |