golang/go

cmd/cgo: cgo + static const int results in "undefined reference" on linux

开放

#40,820 创建于 2020年8月16日

 (6 条评论) (1 个反应) (0 位负责人)Go (19,008 个派生)batch import
NeedsInvestigationcompiler/runtimehelp wanted

仓库指标

星标
 (133,883 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

What version of Go are you using (go version)?

Does this issue reproduce with the latest release?

Have not tried

What operating system and processor architecture are you using (go env)?

What did you do?

Linking of a program referring to static const int fails with undefined reference:

foo.h

static const int BAR = 1;

foo.go

package main

/*
#include "foo.h"
*/
import "C"
import "fmt"

const (
  BAR = int(C.BAR)
)

func main() {
  fmt.Println(BAR)
}

What did you expect to see?

Compilation succeeds on linux as it does on darwin

What did you see instead?

go build
/usr/bin/ld: $WORK/b001/_cgo_main.o:/tmp/go-build/cgo-generated-wrappers:2: undefined reference to `BAR'
collect2: error: ld returned 1 exit status

贡献者指南