go - 在太阳能上使用 gcc 9.1.0 的未定义 C 类型“int”
问题描述
我从源代码 (GNU) 在 Solaris 11 (SPARC) 上构建了 gcc 9.1.0。构建进展顺利,CGO 免费的 Go 代码可以编译并运行。
使用 CGO 代码 gccgo 构建不会编译。引用任何 C 标准类型(如 C.int)的 go 代码返回错误:
sh> go build ./...
./main.go:18:2: call of non-function C.f
./main.go:18:6: invalid conversion to C.int: undefined C type 'int'
这是未构建的简单示例代码。
package main
/*
#include <stdio.h>
void f(int i) {
fprintf(stdout,"INT: %d\n",i);
}
*/
import "C"
import (
"fmt"
)
func main() {
// Simple C function call.
C.f(C.int(1))
fmt.Println("ABC")
}
在其他平台上,正确引用了 C 类型。在 gcc 编译期间我是否错过了编译器标志?
configure
使用以下命令调用 gcc:
../configure --prefix=<path>/gcc-solaris-9.1.0 --enable-languages=c,c++,go,objc,lto
有没有人提示如何在 Solaris SPARC 上正确构建 gccgo?是否缺少 Solaris 上需要的头包含文件依赖项?
解决方案
推荐阅读
- arrays - 使用数组 VBA 获取行号
- jointjs - 如何使jointjs元素中的标签文本不可选?
- html - 在 iPhone 上单击下拉菜单时网站会缩小吗?
- vb.net - 需要在 VB.Net 桌面应用程序中接收发送到 HTTPS:// URL 的 HTTP 请求
- c - C fork() 和指针交互
- c++ - 使用 void 方法将字符串从 txt 文件检索到 int C++ 的向量
- curl - Swagger 中的 cURL 请求?
- swift - 为什么这些 getter/setter 中的 1 个有效,而其他的无效
- jquery - 使用 Bootstrap 和 jQuery 多选文件 - 内部代码
- javascript - 过滤对象日期时间的javascript数组,因此没有重叠