Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compiling error on Alpine Armv7 (multiple definition) #15

Open
DvaMishkiLapa opened this issue May 31, 2023 · 1 comment
Open

Compiling error on Alpine Armv7 (multiple definition) #15

DvaMishkiLapa opened this issue May 31, 2023 · 1 comment

Comments

@DvaMishkiLapa
Copy link

Good afternoon, I encountered the following problem during compilation:

...
[ 98%] Building C object CMakeFiles/gish.dir/main.c.o
[100%] Linking C executable /home/thesame/GitProjects/gish/gish
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/custom.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/custom.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/game.c.o:(.bss+0x0): multiple definition of `numofobjectrenders'; CMakeFiles/gish.dir/game/editor.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/game.c.o:(.bss+0x4): multiple definition of `objectrender'; CMakeFiles/gish.dir/game/editor.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/gametexture.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/gametexture.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/high.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/high.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/level.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/level.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/lighting.c.o:(.bss+0x0): multiple definition of `numofobjectrenders'; CMakeFiles/gish.dir/game/editor.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/lighting.c.o:(.bss+0x4): multiple definition of `objectrender'; CMakeFiles/gish.dir/game/editor.c.o:(.bss+0x4): first defined here/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/music.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/music.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/player.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/player.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/prerender.c.o:(.bss+0x0): multiple definition of `numofobjectrenders'; CMakeFiles/gish.dir/game/editor.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/prerender.c.o:(.bss+0x4): multiple definition of `objectrender'; CMakeFiles/gish.dir/game/editor.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/render.c.o:(.bss+0x0): multiple definition of `numofobjectrenders'; CMakeFiles/gish.dir/game/editor.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/render.c.o:(.bss+0x4): multiple definition of `objectrender'; CMakeFiles/gish.dir/game/editor.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/replay.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/game/replay.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/sdl/endian.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/sdl/endian.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/sdl/file.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/sdl/file.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/video/texture.c.o:(.bss+0x0): multiple definition of `fread2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x0): first defined here
/usr/lib/gcc/armv7-alpine-linux-musleabihf/13.1.1/../../../../armv7-alpine-linux-musleabihf/bin/ld: CMakeFiles/gish.dir/video/texture.c.o:(.bss+0x4): multiple definition of `fwrite2'; CMakeFiles/gish.dir/game/block.c.o:(.bss+0x4): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/gish.dir/build.make:1001: /home/thesame/GitProjects/gish/gish] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/gish.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

More information:

$ ld -v
GNU ld (GNU Binutils) 2.40

$ uname -a
Linux nokia-n900 6.3.4 #1-postmarketOS SMP PREEMPT Sun May 28 18:31:00 UTC 2023 armv7l Linux

$ gcc --version
gcc (Alpine 13.1.1_git20230527) 13.1.1 20230527
@marcosCapistrano
Copy link

marcosCapistrano commented Mar 8, 2024

Same problem here on ubuntu

EDIT:
Fixed it by declaring fread2 and fwrite2 with extern keywords,
and in sdl/file.c, defining it at the top of the file, like so:

sdl/file.h
extern size_t (*fwrite2)(const void *, size_t, size_t, FILE *);
extern size_t (*fread2)(void *, size_t, size_t, FILE *);

sdl/file.c
size_t (*fwrite2)(const void *, size_t, size_t, FILE *);
size_t (*fread2)(void *, size_t, size_t, FILE *);

Other compilation errors will show up for other files, just do the same thing and it will work!

franko pushed a commit to fairpublishing/gish that referenced this issue Sep 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants