~eliasnaur/gio

1

Re: Running Gio without windowing system on Linux embedded

Details
Message ID
<20241031091325.0951f295@lin8664>
DKIM signature
pass
Download raw message
Intrigued by the idea to have my initscript start a graphical
application to report to and interact with the user I investigated
further:

While the author of cage is rather optimistic about a static cage-build:
https://github.com/cage-kiosk/cage/issues/190

Others who tried are not so much:
https://github.com/cage-kiosk/cage/issues/256

So I thought I give it a shot myselfe.  Since I'm new to all of this I
thought I start with an easy first challange:

Setup the latest pi-os WITHOUT graphical subsystem
https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2024-10-28/2024-10-22-raspios-bookworm-armhf-lite.img.xz
on an rpi3 B+ and run cage with an hellogio binary.

The pi setup went smooth and to my supprise:
```
$ apt-cache search cage
cage - Kiosk compositor for Wayland
...
```
there is a cage build in the software repository.  So all that's left is
to build hellogio.

Following https://gioui.org/doc/install/linux I ran successfully

```
sudo apt install gcc pkg-config libwayland-dev libx11-dev \
	libx11-xcb-dev libxkbcommon-x11-dev libgles2-mesa-dev \
	libegl1-mesa-dev libffi-dev libxcursor-dev libvulkan-dev
```

and grabed
`wget https://git.sr.ht/~eliasnaur/gio-example/tree/main/item/hello/hello.go`

Using the go build from the `pi os` repository led to:

```
~/go/src/hellogio $ go build .
# gioui.org/io/pointer
../../pkg/mod/gioui.org@v0.7.1/io/pointer/pointer.go:230:8: undefined:
min 
../../pkg/mod/gioui.org@v0.7.1/io/pointer/pointer.go:231:8: undefined:
max 
note: module requires Go 1.21
```

So I switching to the latest go build

```
~/go/src/hellogio $ go version
go version go1.23.2 linux/arm
```

and the following happened; any ideas?
```
~/go/src/hellogio $ go build .
# example.com/rpi3/hellogio
/usr/local/go/pkg/tool/linux_arm/link: running gcc failed: exit status 1
/usr/bin/gcc -marm -o $WORK/b001/exe/a.out -Wl,--export-dynamic-symbol=_cgo_panic -Wl,--export-dynamic-symbol=_cgo_topofstack -Wl,--export-dynamic-symbol=crosscall2 -Wl,--export-dynamic-symbol=gio_onDataDeviceDrop -Wl,--export-dynamic-symbol=gio_onDataDeviceEnter -Wl,--export-dynamic-symbol=gio_onDataDeviceLeave -Wl,--export-dynamic-symbol=gio_onDataDeviceMotion -Wl,--export-dynamic-symbol=gio_onDataDeviceOffer -Wl,--export-dynamic-symbol=gio_onDataDeviceSelection -Wl,--export-dynamic-symbol=gio_onDataOfferAction -Wl,--export-dynamic-symbol=gio_onDataOfferOffer -Wl,--export-dynamic-symbol=gio_onDataOfferSourceActions -Wl,--export-dynamic-symbol=gio_onDataSourceAction -Wl,--export-dynamic-symbol=gio_onDataSourceCancelled -Wl,--export-dynamic-symbol=gio_onDataSourceDNDDropPerformed -Wl,--export-dynamic-symbol=gio_onDataSourceDNDFinished -Wl,--export-dynamic-symbol=gio_onDataSourceSend -Wl,--export-dynamic-symbol=gio_onDataSourceTarget -Wl,--export-dynamic-symbol=gio_onFrameDone -Wl,--e
 xport-dynamic-symbol=gio_onKeyboardEnter -Wl,--export-dynamic-symbol=gio_onKeyboardKey -Wl,--export-dynamic-symbol=gio_onKeyboardKeymap -Wl,--export-dynamic-symbol=gio_onKeyboardLeave -Wl,--export-dynamic-symbol=gio_onKeyboardModifiers -Wl,--export-dynamic-symbol=gio_onKeyboardRepeatInfo -Wl,--export-dynamic-symbol=gio_onOutputDone -Wl,--export-dynamic-symbol=gio_onOutputGeometry -Wl,--export-dynamic-symbol=gio_onOutputMode -Wl,--export-dynamic-symbol=gio_onOutputScale -Wl,--export-dynamic-symbol=gio_onPointerAxis -Wl,--export-dynamic-symbol=gio_onPointerAxisDiscrete -Wl,--export-dynamic-symbol=gio_onPointerAxisSource -Wl,--export-dynamic-symbol=gio_onPointerAxisStop -Wl,--export-dynamic-symbol=gio_onPointerButton -Wl,--export-dynamic-symbol=gio_onPointerEnter -Wl,--export-dynamic-symbol=gio_onPointerFrame -Wl,--export-dynamic-symbol=gio_onPointerLeave -Wl,--export-dynamic-symbol=gio_onPointerMotion -Wl,--export-dynamic-symbol=gio_onRegistryGlobal -Wl,--export-dynamic-symbol=gio_onR
 egistryGlobalRemove -Wl,--export-dynamic-symbol=gio_onSeatCapabilities -Wl,--export-dynamic-symbol=gio_onSeatName -Wl,--export-dynamic-symbol=gio_onSurfaceEnter -Wl,--export-dynamic-symbol=gio_onSurfaceLeave -Wl,--export-dynamic-symbol=gio_onTextInputCommitString -Wl,--export-dynamic-symbol=gio_onTextInputDeleteSurroundingText -Wl,--export-dynamic-symbol=gio_onTextInputDone -Wl,--export-dynamic-symbol=gio_onTextInputEnter -Wl,--export-dynamic-symbol=gio_onTextInputLeave -Wl,--export-dynamic-symbol=gio_onTextInputPreeditString -Wl,--export-dynamic-symbol=gio_onToplevelClose -Wl,--export-dynamic-symbol=gio_onToplevelConfigure -Wl,--export-dynamic-symbol=gio_onToplevelDecorationConfigure -Wl,--export-dynamic-symbol=gio_onTouchCancel -Wl,--export-dynamic-symbol=gio_onTouchDown -Wl,--export-dynamic-symbol=gio_onTouchFrame -Wl,--export-dynamic-symbol=gio_onTouchMotion -Wl,--export-dynamic-symbol=gio_onTouchUp -Wl,--export-dynamic-symbol=gio_onXdgSurfaceConfigure -Wl,--compress-debug-secti
 ons=zlib /tmp/go-link-775134620/go.o /tmp/go-link-775134620/000000.o /tmp/go-link-775134620/000001.o /tmp/go-link-775134620/000002.o /tmp/go-link-775134620/000003.o /tmp/go-link-775134620/000004.o /tmp/go-link-775134620/000005.o /tmp/go-link-775134620/000006.o /tmp/go-link-775134620/000007.o /tmp/go-link-775134620/000008.o /tmp/go-link-775134620/000009.o /tmp/go-link-775134620/000010.o /tmp/go-link-775134620/000011.o /tmp/go-link-775134620/000012.o /tmp/go-link-775134620/000013.o /tmp/go-link-775134620/000014.o /tmp/go-link-775134620/000015.o /tmp/go-link-775134620/000016.o /tmp/go-link-775134620/000017.o /tmp/go-link-775134620/000018.o /tmp/go-link-775134620/000019.o /tmp/go-link-775134620/000020.o /tmp/go-link-775134620/000021.o /tmp/go-link-775134620/000022.o /tmp/go-link-775134620/000023.o /tmp/go-link-775134620/000024.o /tmp/go-link-775134620/000025.o /tmp/go-link-775134620/000026.o /tmp/go-link-775134620/000027.o /tmp/go-link-775134620/000028.o /tmp/go-link-775134620/000029.o 
 /tmp/go-link-775134620/000030.o /tmp/go-link-775134620/000031.o /tmp/go-link-775134620/000032.o /tmp/go-link-775134620/000033.o /tmp/go-link-775134620/000034.o /tmp/go-link-775134620/000035.o /tmp/go-link-775134620/000036.o /tmp/go-link-775134620/000037.o /tmp/go-link-775134620/000038.o /tmp/go-link-775134620/000039.o /tmp/go-link-775134620/000040.o /tmp/go-link-775134620/000041.o /tmp/go-link-775134620/000042.o /tmp/go-link-775134620/000043.o /tmp/go-link-775134620/000044.o /tmp/go-link-775134620/000045.o /tmp/go-link-775134620/000046.o /tmp/go-link-775134620/000047.o /tmp/go-link-775134620/000048.o /tmp/go-link-775134620/000049.o /tmp/go-link-775134620/000050.o /tmp/go-link-775134620/000051.o /tmp/go-link-775134620/000052.o /tmp/go-link-775134620/000053.o /tmp/go-link-775134620/000054.o /tmp/go-link-775134620/000055.o /tmp/go-link-775134620/000056.o /tmp/go-link-775134620/000057.o /tmp/go-link-775134620/000058.o -O2 -g -lEGL -lwayland-egl -lwayland-client -lwayland-cursor -lxkbcom
 mon-x11 -lxkbcommon -lX11-xcb -lX11 -lxcb -lXcursor -lXfixes -O2 -g -lEGL -O2 -g -ldl -lwayland-client -O2 -g -lpthread -O2 -g -lxkbcommon -O2 -g -O2 -g -lm -lm -lm -lm -lm -lm -lm -O2 -g -O2 -g -ldl -no-pie
/usr/bin/ld: error: $WORK/b001/exe/a.out uses VFP register arguments, /tmp/go-link-775134620/000047.o does not
/usr/bin/ld: failed to merge target specific data of file /tmp/go-link-775134620/000047.o
/usr/bin/ld: error: $WORK/b001/exe/a.out uses VFP register arguments, /tmp/go-link-775134620/000048.o does not
/usr/bin/ld: failed to merge target specific data of file /tmp/go-link-775134620/000048.o
/usr/bin/ld: error: $WORK/b001/exe/a.out uses VFP register arguments, /tmp/go-link-775134620/000049.o does not
/usr/bin/ld: failed to merge target specific data of file /tmp/go-link-775134620/000049.o
/usr/bin/ld: error: $WORK/b001/exe/a.out uses VFP register arguments, /tmp/go-link-775134620/000050.o does not
/usr/bin/ld: failed to merge target specific data of file /tmp/go-link-775134620/000050.o
/usr/bin/ld: error: $WORK/b001/exe/a.out uses VFP register arguments, /tmp/go-link-775134620/000051.o does not
/usr/bin/ld: failed to merge target specific data of file /tmp/go-link-775134620/000051.o
/usr/bin/ld: error: $WORK/b001/exe/a.out uses VFP register arguments, /tmp/go-link-775134620/000052.o does not
/usr/bin/ld: failed to merge target specific data of file /tmp/go-link-775134620/000052.o
/usr/bin/ld: error: $WORK/b001/exe/a.out uses VFP register arguments, /tmp/go-link-775134620/000053.o does not
/usr/bin/ld: failed to merge target specific data of file /tmp/go-link-775134620/000053.o
collect2: error: ld returned 1 exit status
```

Re: Running Gio without windowing system on Linux embedded

Details
Message ID
<CAMAFT9VJm+jR5LC9Z-6W5bxogwM+zZBYywLq_h4ZU9n2tLywgA@mail.gmail.com>
In-Reply-To
<20241031091325.0951f295@lin8664> (view parent)
DKIM signature
pass
Download raw message
On Thu, 31 Oct 2024 at 09:13, Stephan <stephan.lukits@gmail.com> wrote:
> and the following happened; any ideas?
> ```
> ~/go/src/hellogio $ go build .
> # example.com/rpi3/hellogio
>  mon-x11 -lxkbcommon -lX11-xcb -lX11 -lxcb -lXcursor -lXfixes -O2 -g -lEGL -O2 -g -ldl -lwayland-client -O2 -g -lpthread -O2 -g -lxkbcommon -O2 -g -O2 -g -lm -lm -lm -lm -lm -lm -lm -O2 -g -O2 -g -ldl -no-pie
> /usr/bin/ld: error: $WORK/b001/exe/a.out uses VFP register arguments, /tmp/go-link-775134620/000047.o does not
> /usr/bin/ld: failed to merge target specific data of file /tmp/go-link-775134620/000047.o

This looks like Go builds with the software floating point ABI and gcc
does not. Perhaps experiment
with GOARM (https://tip.golang.org/doc/go1.22#arm) and its softfloat
and hardfloat directives.

Thanks,
Elias
Reply to thread Export thread (mbox)