/go-static-linking

Demo of how to static link a c library to some go code.

Primary LanguageCMake

Go-C static linked demo

Quick demo to show how to statically link a c library to a go application.

Quick start

mkdir build
cd build
cmake ..
make

cd ..
cd demo
export GOPATH=`pwd`
go build
./demo

Windows

Building and running on windows is complicated. Long story short, do this:

mkdir build
cd build
cmake .. -G "MSYS Makefiles"
make

cd ..
cd demo
export GOPATH=`pwd`
go build
./demo

Windows notes

You must use MSYS for cgo. Visual studio is not supported. Install MSYS and run the MSYS shell for the commands.

You must also use the right MSYS. The default MSYS is usually 32-bit; the default windows install of go is 64-bit. That won't work. Either install the 64-bit version of MSYS, or the 32-bit version of go.

You have to use the MSYS shell. Using the standard shell, or powershell won't work; the right commands are not the PATH and go build won't work.

Once again, no, visual studio is not supported. If you run:

cmake ..

The default is to generate a visual studio projet. Don't use this, the static .lib file generated is not compatible.

Finally, yes, it does actually work. :)

yay