Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: SUSE 9.3  (Przeczytany 7823 razy)

Bakus

  • Gość
SUSE 9.3
« dnia: 2005-06-06, 22:16:58 »
Jestem początkującym programistą linuksa, programowałem wcześniej w Windowsie, więc jestem przyzwyczajony do zintegrowanych środowisk programistycznych. Jestem w trakcie \\"przerzucania się\\" z Windowsa na Linuksa i uczę sie \\"jak w nim programować\\".
Niedawno napotkałem następujący problem: postanowiłem nauczyć się robić Makefile do moich programów, wziąłem więc się za neta i zacząłem o tym czytać. Potem zrobiłem prosty programik, żeby sprawdzić, czy make będzie działał (niestety nie działał).
Oto kod mojego programu:

// inc.h:
int func (int a);


// inc.cpp:
int func (int a)
{
    return a*2;
}


// main.cpp
#include
#include \\"inc.h\\"

int main (void)
{
    int a;
    a= func(2);
    printf(\\"n%dn\\", a);
    return 0;
}


// Makefile:
prog: main.o inc.o
    g++ $(CFLAGS) -o prog main.o inc.o
main.o: main.cpp inc.h
    g++ $(CFLAGS) -c main.cpp
inc.o: inc.cpp inc.h
    g++ $(CFLAGS) -c inc.cpp
clean:
    rm -f *.o prog

Po napisaniu tego \\"bardzo długiego\\" programu wpisałem w linii poleceń, po znaku zachęty make i \\"wyskoczył\\" mi następujący błąd:
   Makefile:2: *** missing separator.  Stop.

Przypuszczam, że popełniłem jakiś prosty błąd (jakaś literówka lub coś takiego), ale nie mogę go znaleźć.
Bardzo proszę o szybką odpowiedź (... i nie besztajcie mnie zbytnio, ja jestem tylko nieszkodliwym niewbie).  :D

BaQs

xis

  • Gość
SUSE 9.3
« Odpowiedź #1 dnia: 2005-06-06, 23:39:55 »
2005-06-06 22:16:58 Bakus napisał:

[ciach]
 >
 > // Makefile:
 > prog: main.o inc.o
 >     g++ $(CFLAGS) -o prog main.o inc.o
 > main.o: main.cpp inc.h
 >     g++ $(CFLAGS) -c main.cpp
 > inc.o: inc.cpp inc.h
 >     g++ $(CFLAGS) -c inc.cpp
 > clean:
 >     rm -f *.o prog
 >
 > Po napisaniu tego \\"bardzo długiego\\" programu wpisałem w linii poleceń, po znaku
 > zachęty make i \\"wyskoczył\\" mi następujący błąd:
 >    Makefile:2: *** missing separator.  Stop.
 >

Makefile używa separatora w linijce pod nazwą reguły. Musisz użyć podwójnego wcięcia tabulacją pod każdą nazwą reguły.
Najlepiej (chyba) pisać Makefile w edytorach, które mają podświetlanie składni (ja polecam konsolowy mcedit). One ładnie pokazują te wcięcia lub ich brak.

Powodzenia

PS. Na przyszłośc postaraj się lepiej precyzować problem w tytule wątku (to tak gwoli besztania ;) )

de_laurent

  • Gość
SUSE 9.3
« Odpowiedź #2 dnia: 2005-06-06, 23:54:02 »
Nie znam sie kompletnie na programowaniu, ale:

- jezeli tu masz srednik na koncu, po int, to...
 > // inc.h:
 > int func (int a);
 
 
- tutaj tez chyba powinien byc?
 > // inc.cpp:
 > int func (int a)
 

xis

  • Gość
SUSE 9.3
« Odpowiedź #3 dnia: 2005-06-07, 09:01:56 »
2005-06-06 23:54:02 de_laurent napisał:

> Nie znam sie kompletnie na programowaniu, ale:
 >
 > - jezeli tu masz srednik na koncu, po int, to...
 >  > // inc.h:
 >  > int func (int a);
 >  
 >  
 > - tutaj tez chyba powinien byc?
 >  > // inc.cpp:
 >  > int func (int a)
 >  
 >

De_Laurent, nie. W pliku .h (nagłówkowym) jest tylko deklaracja tej f-cji. Przedstawia się tam jej nazwę i parametry.
W pliku .c (kodzie) zaś, jest definicja, a więc nazwa, parametry i ciało (to ta część w klamerkach).

Pozdrówka

Bakus

  • Gość
SUSE 9.3
« Odpowiedź #4 dnia: 2005-06-07, 14:33:08 »
2005-06-06 23:39:55 xis napisał:

> 2005-06-06 22:16:58 Bakus napisał:
 >
 > [ciach]
 >  >
 >  > // Makefile:
 >  > prog: main.o inc.o
 >  >     g++ $(CFLAGS) -o prog main.o inc.o
 >  > main.o: main.cpp inc.h
 >  >     g++ $(CFLAGS) -c main.cpp
 >  > inc.o: inc.cpp inc.h
 >  >     g++ $(CFLAGS) -c inc.cpp
 >  > clean:
 >  >     rm -f *.o prog
 >  >
 >  > Po napisaniu tego \\"bardzo długiego\\" programu wpisałem w linii poleceń, po
 > znaku
 >  > zachęty make i \\"wyskoczył\\" mi następujący błąd:
 >  >    Makefile:2: *** missing separator.  Stop.
 >  >
 >
 > Makefile używa separatora w linijce pod nazwą reguły. Musisz użyć podwójnego wcięcia tabulacją
 > pod każdą nazwą reguły.
 > Najlepiej (chyba) pisać Makefile w edytorach, które mają podświetlanie składni (ja polecam
 > konsolowy mcedit). One ładnie pokazują te wcięcia lub ich brak.
 >
 > Powodzenia
 >
 > PS. Na przyszłośc postaraj się lepiej precyzować problem w tytule wątku (to tak gwoli besztania
 > ;) )
 >

THX, po prostu nie wiedziałem, że trzeba stosować podwójne wcięcia (myślałem, że się stosuje pojedyncze). Wiedziałem, że to będzie właśnie błąd tego typu. Thx za pomoc.

BaQs

wojtekm

  • Gość
SUSE 9.3
« Odpowiedź #5 dnia: 2005-06-07, 17:55:13 »
2005-06-07 14:33:08 Bakus napisał:

 > THX, po prostu nie wiedziałem, że trzeba stosować podwójne wcięcia (myślałem, że się stosuje
 > pojedyncze). Wiedziałem, że to będzie właśnie błąd tego typu. Thx za pomoc.

Tak naprawdę, to chodzi o zwykły znak tabulacji, a że mcedit w standardowej konfiguracji naciścięcie tabulatora traktuje jako 4 spacje, a 8 spacji jak jeden znak tabulacji to inna śpiewka.
W przeciętnym edytorze tekstowym wystarczy po prostu wstawić jedną tabulację.

Wojtek

mariqu

  • Gość
SUSE 9.3
« Odpowiedź #6 dnia: 2005-06-06, 09:13:33 »
Mam zainstalowany SUSE 9.2 Pro z LinuxMagazin. Czy jest możliwy update do wersji 9.3 ? Ewentualnie co ustawić, obecnie mogę tylko wykonać update w ramach wersji 9.2.

G_P

  • Gość
SUSE 9.3
« Odpowiedź #7 dnia: 2005-06-06, 10:03:12 »
Jak się nie mylę to możesz kupić SuSe 9.3 po promocyjnej cenie. Bynajmniej tak było w tym przypadku w innych czasopismach z tą płytką.
Pozdrawiam

mody

  • Gość
SUSE 9.3
« Odpowiedź #8 dnia: 2005-06-06, 10:06:48 »
2005-06-06 09:13:33 mariqu napisał:

> Mam zainstalowany SUSE 9.2 Pro z LinuxMagazin. Czy jest możliwy update do wersji 9.3 ?
 > Ewentualnie co ustawić, obecnie mogę tylko wykonać update w ramach wersji 9.2.

Jest gdzieś na serwerach wersja mini SuSe 9.3 z możliwością doinstalowywania przez sieć. Pamiętaj jednak że SuSe to komercyjny Linux więc za darmochę to chyba raczej niewiele dostaniesz...

karsonjey

  • Gość
SUSE 9.3
« Odpowiedź #9 dnia: 2005-06-06, 21:28:37 »
2005-06-06 09:13:33 mariqu napisał:

> Mam zainstalowany SUSE 9.2 Pro z LinuxMagazin. Czy jest możliwy update do wersji 9.3 ?
 > Ewentualnie co ustawić, obecnie mogę tylko wykonać update w ramach wersji 9.2.

Niestety  on-line wersja sie aktualizuje tylko w swojej wersji ,jezeli kupisz nawet jak ja na Allegro wersje suse 9.3 to mozesz  wystartowac ja z dysku CD lub DVD i wybierajac instalacje a nastepnie -aktualizacja zainstalowanego systemu  , uaktualnic do wersji 9.3 bez kasowania wersji wczesniejszej .Pozdrawiam