使用静态库构建二进制文件

时间:2017-08-14 12:07:04

标签: go mingw static-libraries cross-compiling openal

我正在尝试交叉编译(从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

0 个答案:

没有答案