首页 > 解决方案 > 在太阳能上使用 gcc 9.1.0 的未定义 C 类型“int”

问题描述

我从源代码 (GNU) 在 Solaris 11 (SPARC) 上构建了 gcc 9.1.0。构建进展顺利,CGO 免费的 Go 代码可以编译并运行。

使用 CGO 代码 gccgo 构建不会编译。引用任何 C 标准类型(如 C.int)的 g​​o 代码返回错误:

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 上需要的头包含文件依赖项?

标签: gogccsolarisgccgo

解决方案


推荐阅读