Brief

Usage of golang-cross

Whats inside

Demonstrate how to cross-compile Go project with CGO dependencies Project depends on C/C++ libraries libftdi1, libusb-1.0, opencv4 Executable is trying to detect FTDI 2232 boards with VID: 0x0403 and PID: 0x6010 and open channel 0. It lists serial number of all detected boards. Afterwards it is trying to open camera with OpenCV and make test picture into your terminal

Example of output

version: 0.0.4
detecting ftdi devices
detected 1 device(s) with vid: 0x0403 pid: 0x6010:
    [0] serial: FT4AYSJC
detecting camera using opencv...
show your awesome face and smile 😺
capturing in 3..2..1
<your picture is here>
you've been captured!!!!

Cross-compiles for targets:

  • Darwin/amd64
  • Linux/armhf (Raspberry Pi 4 aka RPI4)
  • Linux/amd64 (should not be any issue to add this example)

This example is based on real working solution where Macbook is dev machine and RPI4 is end target Cross-compilation is set for both darwin and linux to ensure nothing is broken with new commits

Sysroot

Sysroots are located in separate repo and added as submodule to current repo Darwin sysroot is created by simply copying libraries from homebrew Linux sysroot is created from RPI4 using this script