Avatar billede reason Nybegynder
08. marts 2002 - 18:12 Der er 5 kommentarer og
1 løsning

C og libs

Jeg skal lave et C lib men jeg kan ikke rigtigt få det til at virke. Koden er god nok - har teste med en main().

min make file
xlong:sublong.s addlong.s xlong.c xlong.h
gcc -c -O1 sublong.s addlong.s xlong.c
ar -r libxlong.a xlong.o addlong.o sublong.o xlong.h

test:test.c xlong.h
gcc -lxlong test.c -o test

nå jeg så prøver at compile test så for jeg det her tilbage
gcc -lxlong test.c -o test
/cygdrive/c/DOCUME~1/Michael/LOCALS~1/Temp/cc33w4Fh.o(.text+0x22):test.c: undefined reference to `XLpushlong'
/cygdrive/c/DOCUME~1/Michael/LOCALS~1/Temp/cc33w4Fh.o(.text+0x32):test.c: undefined reference to `XLpushlong'
/cygdrive/c/DOCUME~1/Michael/LOCALS~1/Temp/cc33w4Fh.o(.text+0x3a):test.c: undefined reference to `XLdumpstack'
/cygdrive/c/DOCUME~1/Michael/LOCALS~1/Temp/cc33w4Fh.o(.text+0x3f):test.c: undefined reference to `XLmult'
/cygdrive/c/DOCUME~1/Michael/LOCALS~1/Temp/cc33w4Fh.o(.text+0x44):test.c: undefined reference to `XLdumpstack'
collect2: ld returned 1 exit status
make: *** [test] Error 1

Jeg kører cygwinpå WinXP

nogle gode forslag?
Avatar billede jpk Nybegynder
08. marts 2002 - 18:30 #1
Tja, det tyder på at du har en variabel eller et funktionskald kaldet XLpushlong som ikke er defineret.
Det kan jo være en stavefejl...?
Tjeck evt. store/små bogstaver
Avatar billede reason Nybegynder
08. marts 2002 - 18:32 #2
det virker fint når jeg compiler test.c sammen med sublong.s addlong.s xlong.c så det er ikke derfor
Avatar billede brilleaben Nybegynder
09. marts 2002 - 11:41 #3
Dette virker hos mig:

xlong:  sublong.s addlong.s xlong.c
        gcc -c -O1 sublong.s addlong.s xlong.c
        ar -r libxlong.a xlong.o addlong.o sublong.o

test:  test.c xlong.h
        gcc -Wall -O2 -I . -L . -o test test.c -lxlong

Det er reglen for 'test' der er interessant:

-I .  =  søg efter include (.h) filer i dette katalog
-L .  =  søg efter libraries (.so)/archives (.a) filer i dette katalog


Prøv det.
Avatar billede reason Nybegynder
09. marts 2002 - 12:39 #4
hey det virker sku tak skal du ha

btw hvad gør -Wall?
Avatar billede brilleaben Nybegynder
09. marts 2002 - 18:12 #5
-W = Warnings  (all = alle)

Sætter Warning-level til 'alle' - viser alt der virker mistænkeligt (eks. missing headers) m.v.    Altid en god switch at have sat til da den viser hvis man er på vej 'ud i noget snavs' ...
Avatar billede reason Nybegynder
09. marts 2002 - 18:18 #6
ok tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester