problem pri pouzivani vlastnej statickej kniznice

Sekcia: Programovanie 05.06.2007 | 22:48
Avatar Frantisek Klabzuba Debian  Používateľ
Mam jednoduchu staticku kniznicu, libprva.a, obsahuje funkciu prva()

Subor prva.h
#ifndef PRVA_H
#define PRVA_H
void prva(void);
#endif

Subor prva.c
#include<stdio.h>
#include<prva.h>
void prva(void) {
        printf("prva\n");
}

Kompilujem ju takto
gcc -I. -Wall -pedantic -c -o prva.o prva.c
ar cru libprva.a prva.o 
ranlib libprva.a

Chcem ju otestovat programom test.c kde chcem volat funkciu prva():
#include<stdio.h>
#include<prva.h>
int main(void) {
        printf("test\n");
        prva();
        return 0;
}

Program test.c kompilujem takto a toto hlasi:
$ gcc -I. -L. -lprva -pedantic test.c -o test
/tmp/ccumNzuH.o: In function `main':
test.c:(.text+0x1e): undefined reference to `prva'
collect2: ld returned 1 exit status

Uz sa s tym hram cely den a neviem prist na to kde je chyba. Urcite je to nejaka blbost. Ked ju skompilujem ako zdielanu (cez -shared a -fpic ako .so) tak to funguje. Neviete niekto kde je chyba? Vsetky subory su v jednom adresari takze s
cestami by snad problem nemal byt. Vdaka.
    • Re: problem pri pouzivani vlastnej statickej kniznice 06.06.2007 | 01:00
      Avatar milossramek kubuntu, debian  Používateľ
      argumenty sa spracovavaju zlava doprava. Linker az pri test.c zisti, co potrebuje. V case ked spracovava -lprva este o tom nevie a teda ani nic nelinkuje.
      Takze, kniznice na koniec.
      • Re: problem pri pouzivani vlastnej statickej kniznice 06.06.2007 | 01:26
        Avatar Frantisek Klabzuba Debian  Používateľ
        no jo, funguje to, vdaka. Vedel som ze to bude nejaka blbost len som na to nemohol prist. este raz vdaka.