makefile, biblioteka współdzielona

madaf007
Użytkownik
Użytkownik
Posty: 131
Rejestracja: 4 wrz 2008, o 17:01
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 33 razy

makefile, biblioteka współdzielona

Post autor: madaf007 »

Witam
Stworzyłem plik library.so za pomocą tego pliku Makefile:

Kod: Zaznacz cały

#Makefile

all: library.so

library.so: drukuj.c dzial.c wpisz.c
	gcc -fPIC -c drukuj.c
	gcc -fPIC -c dzial.c
	gcc -fPIC -c wpisz.c

	gcc -shared -o library.so drukuj.o dzial.o wpisz.o

clean:
	rm -f drukuj.o dzial.o wpisz.o library.so *~
Nastepnie plik library.so umiescilem w folderze lib.

Plik bib.h umiescilem w folderze include

//bib.h

Kod: Zaznacz cały

typedef struct{
float re;
float im;
char k;
}czesci;

void drukuj(czesci);
void modul(czesci);
void dodaj(czesci, czesci);
void pomnoz(czesci, czesci);
void podziel(czesci, czesci);
void sprzezenie(czesci);
void pierwiastkowanie(czesci);
void wpisz(czesci, czesci, czesci);

plik main.c umiescilem w folderze src:

//main.c

Kod: Zaznacz cały

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include "bib.h"

int main()
{
czesci a,b,c,d;

printf("Jeśli chcesz dodać jako działanie podaj +, pomnożyć *,
 podzielić /, sprzezenie _, modul |, pierwiastkowanie ^
");

wpisz(a,b,d);
return 0;
}
W tym samym folderze mam nowy plik Makefile, który ma kompilować już z biblioteką wspóldzieloną:

Kod: Zaznacz cały

#Makefile
all: lista03/zesp/bibwspol/bin/program

lista03/zesp/bibwspol/bin/program: main.o
	gcc -Llista03/zesp/bibwspol/lib -o lista03/zesp/bibwspol/bin/program main.o -lbib

main.o: main.c
	gcc -Ilista03/zesp/bibwspol/include -c main.c 

clean:
	rm -f main.o lista03/zesp/bibwspol/bin/program *~
Niestety przy wpisywaniu polecenia make wyskakuje mi:
gcc -Ilista03/zesp/bibwspol/include -c main.c
main.c:4:17: error: bib.h: Nie ma takiego pliku ani katalogu
main.c: In function ‘main’:
main.c:8: error: ‘czesci’ undeclared (first use in this function)
main.c:8: error: (Each undeclared identifier is reported only once
main.c:8: error: for each function it appears in.)
main.c:8: error: expected ‘;’ before ‘a’
main.c:12: error: ‘a’ undeclared (first use in this function)
main.c:12: error: ‘b’ undeclared (first use in this function)
main.c:12: error: ‘d’ undeclared (first use in this function)
make: *** [main.o] Błąd 1

I nie wiem w czym może być problem. Proszę o pomoc. Dopiero zaczynam te zabawy z Makefile więc proszę o wyrozumiałość. Albo tej struktury w bib.h nie powinno tam być, albo coś mam źle w pliku MAkefile w folderze src.

Wczesniej robilem zwykły Makefile z biblioteką statyczna i bez podziału na foldery i kompilowało się bez problemu
ODPOWIEDZ