a-ba / squint

Duplicate an X11 monitor into a window
GNU General Public License v3.0
17 stars 2 forks source link

Linking step of building squint fails #1

Closed atmenta closed 3 years ago

atmenta commented 3 years ago

Dear Anthony,

First of all, thank you for developing squint!

On my Arch Linux system the "Linking target squint" step fails:

/tmp $ git clone https://github.com/a-ba/squint.git
Cloning into 'squint'...
remote: Enumerating objects: 374, done.
remote: Counting objects: 100% (374/374), done.
remote: Compressing objects: 100% (150/150), done.
remote: Total 374 (delta 250), reused 347 (delta 223), pack-reused 0
Receiving objects: 100% (374/374), 173.52 KiB | 1.56 MiB/s, done.
Resolving deltas: 100% (250/250), done.
/tmp $ cd squint/
/tmp/squint $ meson setup --prefix /usr --buildtype plain builddir
The Meson build system
Version: 0.57.2
Source dir: /tmp/squint
Build dir: /tmp/squint/builddir
Build type: native build
Project name: squint
Project version: undefined
C compiler for the host machine: cc (gcc 10.2.0 "cc (GCC) 10.2.0")
C linker for the host machine: cc ld.bfd 2.36.1
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.7.3)
Run-time dependency gtk+-3.0 found: YES 3.24.29
Run-time dependency x11 found: YES 1.7.0
Run-time dependency ayatana-appindicator3-0.1 found: YES 0.5.5
Run-time dependency xdamage found: YES 1.1.5
Run-time dependency xfixes found: YES 5.0.3
Run-time dependency xi found: YES 1.7.10
Run-time dependency xrandr found: YES 1.5.2
Run-time dependency xrender found: YES 0.9.10
Configuring config.h using configuration
Program txt2tags found: YES (/usr/bin/txt2tags)
Program gzip found: YES (/usr/bin/gzip)
Build targets in project: 4

Found ninja-1.10.2 at /usr/bin/ninja
/tmp/squint $ meson compile -C builddir                                                
ninja: Entering directory `builddir'
[1/6] Generating squint.1 with a custom command
txt2tags wrote /tmp/squint/builddir/squint.1
[2/6] Generating squint.1.html with a custom command
txt2tags wrote ../squint.1.html
[6/6] Linking target squint
FAILED: squint 
cc  -o squint squint.p/squint.c.o squint.p/x11.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,--start-group /usr/lib/libgtk-3.so /usr/lib/libgdk-3.so /usr/lib/libz.so /usr/lib/libpangocairo-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libharfbuzz.so /usr/lib/libatk-1.0.so /usr/lib/libcairo-gobject.so /usr/lib/libcairo.so /usr/lib/libgdk_pixbuf-2.0.so /usr/lib/libgio-2.0.so /usr/lib/libgobject-2.0.so /usr/lib/libglib-2.0.so /usr/lib/libX11.so /usr/lib/libayatana-appindicator3.so /usr/lib/libdbusmenu-glib.so /usr/lib/libXdamage.so /usr/lib/libXfixes.so /usr/lib/libXi.so /usr/lib/libXrandr.so /usr/lib/libXrender.so -Wl,--end-group
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x0): multiple definition of `config'; squint.p/squint.c.o:(.bss+0x0): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x28): multiple definition of `enabled'; squint.p/squint.c.o:(.bss+0x28): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x2c): multiple definition of `fullscreen'; squint.p/squint.c.o:(.bss+0x2c): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x30): multiple definition of `raised'; squint.p/squint.c.o:(.bss+0x30): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x38): multiple definition of `gtkwin'; squint.p/squint.c.o:(.bss+0x38): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x40): multiple definition of `gdkwin'; squint.p/squint.c.o:(.bss+0x40): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x48): multiple definition of `gdisplay'; squint.p/squint.c.o:(.bss+0x48): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x50): multiple definition of `src_rect'; squint.p/squint.c.o:(.bss+0x50): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x60): multiple definition of `dst_rect'; squint.p/squint.c.o:(.bss+0x60): first defined here
/usr/bin/ld: squint.p/x11.c.o:(.bss+0x70): multiple definition of `active_window_rect'; squint.p/squint.c.o:(.bss+0x70): first defined here
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

I guess the problem is related to some variables being declared both in squint.h and squint.c, although I'm not familiar enough with C. However, I can build commit 7f676179e5bf92d734d204ed5a6c2e7c130a1faf successfully. That is the commit right before 5e0e2276629b1aa0d6189b94f8f1aea3634409a4, when squint.h was initially created.

Could you please fix it if this is really a bug, or give some hints on building if it is not?

a-ba commented 3 years ago

I guess gcc 10 is a bit more strict. This should fix your problem.

atmenta commented 3 years ago

I guess gcc 10 is a bit more strict. This should fix your problem.

Thank you, the fix works. squint now builds fine on Arch Linux.