Nowe posty

xx KDE Wallet (7)
Wczoraj o 08:51:55
xx MacOS vs Linux (17)
2019-03-22, 21:20:08
xx [rozwiązane] Jak zainstalować Firefox'a 66 w Mint'cie 19.1? (15)
2019-03-22, 19:24:47
xx Dziwne zachowanie Firefoxa 65.0.1 (8)
2019-03-22, 11:49:13
xx Gdzie jest link do MOJE POSTY? (2)
2019-03-22, 07:34:45
xx HUMBLE BOOK BUNDLE: LINUX BY WILEY (0)
2019-03-22, 07:24:44
xx [ Gra Za Darmo on-line ] Albion Online (1)
2019-03-22, 07:21:33
xx Mint 19.1 - jest na wpół po polsku i angielsku, no szlag... (5)
2019-03-20, 10:49:16
xx brak uprawnień przy pobieraniu (3)
2019-03-20, 02:57:12
xx Reklamy (2)
2019-03-19, 14:58:34

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

Offline Lukasz Lukasz

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 105
    • Zobacz profil
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

Offline xis

  • Global Moderator
  • Guru
  • *****
  • Wiadomości: 1049
    • Zobacz profil
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 ;) )
Everything should be made as simple as possible, but not simpler
-- Albert Einstein

Offline de Laurent

  • Global Moderator
  • Guru
  • *****
  • Wiadomości: 1197
    • Zobacz profil
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)
 

Offline xis

  • Global Moderator
  • Guru
  • *****
  • Wiadomości: 1049
    • Zobacz profil
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
Everything should be made as simple as possible, but not simpler
-- Albert Einstein

Offline Lukasz Lukasz

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 105
    • Zobacz profil
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

Offline Wojciech Miłkowski

  • Global Moderator
  • Stały bywalec
  • *****
  • Wiadomości: 206
    • Zobacz profil
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

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
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.

Offline

  • Users
  • Użytkownik
  • **
  • Wiadomości: 76
    • Zobacz profil
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

Offline Szymon Bieniek

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 16
    • Zobacz profil
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...

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 38
    • Zobacz profil
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