[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: signaler un bug dans ld sur debian bulleye?




On 08/06/2021 07:45, Basile Starynkevitch wrote:


On 08/06/2021 07:36, Marc Chantreux wrote:
salut à tous,

j'obtiens ça lorsque je tente de compiler ploot sur ma debian bulleye

+ cd ~/src/ploot
+ git remote get-url origin
git://bitreich.org/ploot
+ make
cc -static -o ploot-farbfeld ploot-farbfeld.o src/csv.o src/drawille.o src/ffplot.o src/font.o src/font13.o src/font8.o src/log.o src/scale.o src/util.o -lm
/usr/bin/ld : src/csv.o:(.bss+0x0) : définitions multiples de « log_level »; ploot-farbfeld.o:(.bss+0x810) : défini pour la première fois ici
…
/usr/bin/ld : src/scale.o:(.bss+0x0) : définitions multiples de « log_level »; ploot-farbfeld.o:(.bss+0x810) : défini pour la première fois ici
collect2: error: ld returned 1 exit status
make: *** [Makefile:18 : ploot-farbfeld] Erreur 1

par contre sous alpine ca marche sans soucis

    <<. chroot ~/local/machines/alpine-latest /bin/sh
    apk update
    apk add git musl-dev
    git clone git://bitreich.org/ploot
    cd ploot
    make

je pourrais m'arrêter là mais y'a peut-être bug et cas échéant
j'aimerais le remonter. par contre je n'ai presque pas fait de C pendant
les 25 dernières années et je ne sais pas trop quoi verifier pour
qualifier le bug. une idée?


Il peut manquer un extern dans un fichier d'entête. C'est la différence entre les C récents et le C89.


Autrefois on pouvait déclarer une variable globale entière foo avec

int foo;

dans un fichier d'entête header.h qui est #include "header.h" à plusieurs reprises (dans plusieurs fichiers *.c)

Maintenant, il faut déclarer dans header.h

extern int foo;

Et définir dans un seul fichier truc.c la variable globale foo avec

int foo;

ou même


int foo = 34;

Concretement la ligne 7 de votre fichier src/log.h doit contenir extern int log_level;

-- 
Basile Starynkevitch                  <basile@starynkevitch.net>
(only mine opinions / les opinions sont miennes uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/


Reply to: