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 *~
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;
}
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 *~
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