Open samsamm777 opened 6 years ago
Have you tried brew install nasm
?
@brian-armstrong-discord Yes I've now got all the deps installed. Initially thought that would fix it, however building with crosscompile still doesn't work.
What is the error?
I'd like to add my voice to this issue as well. It seems like cross-compiling, regardless of the host os, isn't working as hoped.
On macOS:
$ GOOS=linux go build
# github.com/discordapp/lilliput
../../go/src/github.com/discordapp/lilliput/lilliput.go:26:13: undefined: ImageHeader
../../go/src/github.com/discordapp/lilliput/lilliput.go:41:14: undefined: Framebuffer
../../go/src/github.com/discordapp/lilliput/lilliput.go:48:12: undefined: Framebuffer
../../go/src/github.com/discordapp/lilliput/ops.go:43:16: undefined: Framebuffer
On Linux:
$ GOOS=darwin go build
# github.com/discordapp/lilliput
../../go/src/github.com/discordapp/lilliput/lilliput.go:26:13: undefined: ImageHeader
../../go/src/github.com/discordapp/lilliput/lilliput.go:41:14: undefined: Framebuffer
../../go/src/github.com/discordapp/lilliput/lilliput.go:48:12: undefined: Framebuffer
../../go/src/github.com/discordapp/lilliput/ops.go:43:16: undefined: Framebuffer
go build
in the same directory works regardless of platform.
My "go greeness" is showing here, but could it be that the platform is getting lost along the way, resulting in a build attempt that's just all kinds of confused?
Well, this package also has c deps that are needed, and compilation has to occur with cgo.
Maybe https://gist.github.com/steeve/6905542 is relevant?
It looks like if nothing else, in cross-compile mode, you need CGO_ENABLED=1. But you'll also need a valid cross-compile setup for compiling the C deps.
Did you manage to work around this issue @samsamm777
docker run -it --rm \
-v $GOPATH/src/github.com/MYPROJECT/app/backend:/go/src/github.com/MYPROJECT/app/backend \
-w /go/src/github.com/MYPROJECT/app/backend \
-e CGO_ENABLED=1 \
docker.elastic.co/beats-dev/golang-crossbuild:1.14.4-main-debian8 \
--build-cmd "go build" \
-p "linux/amd64"
Only this error left now:
/usr/bin/ld: cannot find -lpng
/usr/bin/ld: cannot find -lpng
collect2: error: ld returned 1 exit status
Error: failed building for linux/amd64: exit status 2
failed building for linux/amd64: exit status 2
docker run -it --rm \
-v $GOPATH/src/github.com/MYPROJECT/app/backend:/go/src/github.com/MYPROJECT/app/backend \
-w /go/src/github.com/MYPROJECT/app/backend \
-e CGO_ENABLED=1 \
docker.elastic.co/beats-dev/golang-crossbuild:1.14.4-main-debian8 \
--build-cmd "
apt-get update
apt-get install gcc libc6-dev
apt-get install libx11-dev xorg-dev libxtst-dev libpng++-dev
apt-get install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev libxkbcommon-dev
apt-get install xsel xclip
go build -v" \
-p "linux/amd64"
Results in
/usr/bin/ld: /go/pkg/mod/github.com/discordapp/lilliput@v0.0.0-20191204003513-dd93dff726a5/deps/linux/lib/libswscale.a(swscale.o): unrecognized relocation (0x2a) in section `.text'
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
Error: failed building for linux/amd64: exit status 2
failed building for linux/amd64: exit status 2
Ah debian8 is old apparently https://github.com/crystal-lang/crystal/issues/8653#issuecomment-571178404. It works with this command on OSX.
docker run -it --rm \
-v $GOPATH/src/github.com/MYPROJECT/app/backend:/go/src/github.com/MYPROJECT/app/backend \
-w /go/src/github.com/MYPROJECT/app/backend \
-e CGO_ENABLED=1 \
docker.elastic.co/beats-dev/golang-crossbuild:1.14.4-main \
--build-cmd "
apt-get -y update
apt-get -y install gcc libc6-dev
apt-get -y install libx11-dev xorg-dev libxtst-dev libpng++-dev
apt-get -y install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev libxkbcommon-dev
apt-get -y upgrade binutils
apt-get -y install xsel xclip
go build -v" \
-p "linux/amd64"
Final command :-D
It works 👍
docker run -it --rm \
-v $GOPATH/src/github.com/MYPROJECT/app/backend:/go/src/github.com/MYPROJECT/app/backend \
-w /go/src/github.com/MYPROJECT/app/backend \
-e CGO_ENABLED=1 \
docker.elastic.co/beats-dev/golang-crossbuild:1.14.4-main \
--build-cmd "
apt-get -y update
apt-get -y install libpng++-dev
go build -v
" \
-p "linux/amd64"
Im having issues with cross compiling. Compiling normally on OSX works fine. However when i try the following it produces errors. Any ideas?
Edit: I get this error when building the deps for osx or linux.