Mam problem. Miałem zrobić 7 funkcji dotyczących obróbki tekstu i zrobiłem. Oto fragment polecenia na studiach co mam zrobić dalej:
"
Deklaracje funkcji umieścić w pliku nagłówkowym o nazwie np. funTabTekst.h.
Definicje (implementacje) funkcji umieścić w pliku źródłowym o nazwie np. funTabTekst.c.
Funkcję main() zaimplementować w oddzielnym pliku, np. tekst.c, a powyżej jej definicji włączyć powyższy plik nagłówkowy deklaracją: #include"funTabTekst.h" Tutaj nazwę pliku nagłówkowego umieszczamy pomiędzy znakami " "a nie znakami < >, co oznacza, że plik nagłówkowy będzie szukany w bieżącym katalogu, a nie katalogu ustawionym domyślnie w danym systemie.
Skompilować każdy plik źródłowy(z rozszerzeniem .c) oddzielnie, a potem zlinkować je razem, np. $gcc -o tekst.x tekst.o funTabTekst.o
"
- Każą nam zrobić funkcję main w pliku tekst.c.
- W pliku funTabTekst.c mam tylko definicje funkcji (bez funkcji main). Jednak mówią, żeby każdy plik źródłowy skompilować oddzielnie! Jak mam to zrobić skoro nie mam funkcji main w funTabTekst.c. Dobra nawet jak ją dodam do pliku i skompiluję to będę miał kolejny problem, bo gdy zlinkuję
gcc -o tekst.x tekst.o funTabTekst.o to będę miał dwie funkcje main i błąd
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
Dlaczego oni się upierają z tym oddzielnym kompilowaniem każdego pliku źródłowego, a nie po prostu
gcc -o tekst.x funTabTekst.c tekst.c