【发布时间】:2017-12-19 17:43:01
【问题描述】:
我正在尝试构建一个应用程序,它将通过 cgo 使用 32 位 Linux 库(64 位版本不存在)。
尝试构建为 64 位不适用于 32 位库:
[performance goListen]> go build
# goListen
/usr/bin/ld: skipping incompatible /apps/install/tibco/tibrv/live/lib/libtibrv.so when searching for -ltibrv
/usr/bin/ld: skipping incompatible /apps/install/tibco/tibrv/live/lib/libtibrv.a when searching for -ltibrv
/usr/bin/ld: cannot find -ltibrv
collect2: ld returned 1 exit status
当我尝试将其构建为 32 位时,它抱怨没有可构建的源文件:
[performance goListen]> GOARCH=386 go build
can't load package: package goListen: no buildable Go source files in /apps/sierra/shares/sierra_aps/godev/src/goListen
这是我的代码 - 我知道它不会工作,但我只是想让它尝试编译!
package main
/*
#cgo !windows CFLAGS: -I/apps/install/tibco/tibrv/live/include/tibrv
#cgo !windows LDFLAGS: -L/apps/install/tibco/tibrv/live/lib -ltibrv
#cgo windows CFLAGS: -ID:/Rendez-vous/include/tibrv
#cgo windows LDFLAGS: -LD:/Rendez-vous/lib -ltibrv
#include "tibrv.h"
*/
import "C"
import "fmt"
func main() {
fmt.Println(C.tibrv_Open())
}
任何建议将不胜感激。
【问题讨论】:
-
交叉编译时必须显式启用cgo。
-
谢谢@JimB 不知道我是怎么错过的!