我正在尝试交叉编译(从Arch Linux到Windows)一个带有静态链接的openal库的二进制文件。
我使用MinGW交叉编译到Windows和MinGW包我已经安装并打算用来链接静态库mingw-w64-openal
。
我的构建命令如下所示:
CC='i686-w64-mingw32-gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -lssp' GOOS=windows CGO_ENABLED=1 GOARCH=386 go build --ldflags '--extldflags "-static"' -v -o bin/game.exe -tags='deploy' game.go
使用该库的.go文件(下面链接)具有以下cgo代码,用于查找MinGW要使用的静态库:
#cgo windows LDFLAGS: /usr/i686-w64-mingw32/lib/libOpenAL32.dll.a
我在编译期间没有出现任何错误,但是当我尝试在Windows上运行二进制文件时,我得到了典型的The program can't start because OpenAL32.dll is missing
错误。我想要一个完全可移植的可执行文件,因此使用可执行文件重新分发.dll是不行的。
我已修改为编译到windows的go openal包:
https://github.com/golang/mobile/blob/master/exp/audio/al/al_notandroid.go https://github.com/golang/mobile/blob/master/exp/audio/al/alc_notandroid.go