/home/roland/Documents/echecs/sources/gumble/src/check.c: Dans la fonction « cch_is_square_pinned »:
/home/roland/Documents/echecs/sources/gumble/src/check.c:26:5: attention: « cur » pourrait être utilisé sans être initialisé dans cette fonction [-Wmaybe-uninitialized]
   26 |   if(cur != king) return false;         \
      |     ^
/home/roland/Documents/echecs/sources/gumble/src/check.c:47:14: note: « cur » a été déclaré ici
   47 |  cch_piece_t cur, want, want2 = CCH_MAKE_ENEMY_PIECE(b, CCH_QUEEN);
      |              ^~~
/usr/bin/ld : libenginecore.a(board.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
/usr/bin/ld : libenginecore.a(fen.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
/usr/bin/ld : libenginecore.a(algebraic.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
/usr/bin/ld : libenginecore.a(movegen.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
/usr/bin/ld : libenginecore.a(check.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
/usr/bin/ld : libenginecore.a(move.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
/usr/bin/ld : libenginecore.a(search.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
/usr/bin/ld : libenginecore.a(hashtable.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
/usr/bin/ld : libenginecore.a(eval.c.o):/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o:/home/roland/Documents/echecs/sources/gumble/include/gumble.h:305 : défini pour la première fois ici
collect2: erreur: ld a retourné le statut de sortie 1
make[2]: *** [src/CMakeFiles/gumble.dir/build.make:104 : src/gumble] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:934 : src/CMakeFiles/gumble.dir/all] Erreur 2
make: *** [Makefile:114 : all] Erreur 2

--------------------------------------------------------------------------------

https://gitlab.com/artefact2/gumble/-/work_items/1

[Linux] Erreur à la compilation : définitions multiples de « cch_eval_type_t »
Ouvert
  Issue créé 26 déc. 2022 par Roland Chastain
Bonjour !

Très joli programme.

J'obtiens ce message d'erreur à la compilation :

/usr/bin/ld : board.c.o (symbol from plugin) : dans la fonction « cch_init_board » :
(.text+0x0) : définitions multiples de « cch_eval_type_t »; CMakeFiles/gumble.dir/gumble.c.o (symbol from plugin):(.text+0x0) : défini pour la première fois ici
C'est sous Linux, avec GCC 10.4.0.

Le problème peut être résolu en ajoutant le mot clé extern ici :

extern enum __attribute__((packed)) {
		CCH_EVAL_EXACT = 192,
		CCH_EVAL_LOWER_BOUND = 128,
		CCH_EVAL_UPPER_BOUND = 64,
} cch_eval_type_t;
