Programowanie na linuxie

0

Witam, potrzebuje pomocy z programowaniem na linuxie.

  1. Napisałem program w nieskończoną pętlą jak go wyłączyć?
  2. Mam problem ze skryptem make file :
all : program
program : asdw.o
     g++ main.o -o program
asdw.o : asdw.cpp
     g++ -c main.cpp -o main.o

Podczas wywołania "make" wywala mi błąd missing separator.

1

Czy przed 'g++' użyłeś przycisku Tab a nie spacji?

0
  1. Ctrl + C
  2. wygląda jak niepotrzebna spacja przed :
0

@kq

  1. Zadziałało.
  2. Niestety nie pomogło, jakieś inne propozycje?
  3. Macie może jakąś lekturę która przydałaby mi sie podczas programowania na linux'ie?
0

Szybkie googlowanie pokazało, że @szweszwe miał rację, linie trzeba zaczynać od taba, a nie od spacji: http://stackoverflow.com/questions/14109724/makefile-missing-separator

0

Użyłem tabu, ale tutaj pisałem ze spacją bo coś tab nie chciał mi działać :D

0

Tak na przyszłość: gdy napisałeś "g++ -c main.cpp" dalej nic nie musisz pisać. Kolejna rzecz: piszesz recepture na asdw.o, wymagasz pliku asdw.cpp - a budujesz plik main.cpp. nazwij ja tak jak nazwa pliku jaki generujesz, po dwukropku wymien plik z którego budujesz - czyli w twoim wypadku main.cpp. inaczej to nie ma sensu bo receptura sprawdza czasy utowrzenia plików asdw.*, dlatego zawsze go bedziesz budował mimo braku zmian. Tl, dr: zamien wszystkie asdw na main, usuń wszystko po ostatnim "main.cpp".

0

Mamy rok 2014 a wciąż powszechnie używa się języka z significant whitespace jak w latach 70-tych...

0
pylaochos napisał(a):

Tak na przyszłość: gdy napisałeś "g++ -c main.cpp" dalej nic nie musisz pisać. Kolejna rzecz: piszesz recepture na asdw.o, wymagasz pliku asdw.cpp - a budujesz plik main.cpp. nazwij ja tak jak nazwa pliku jaki generujesz, po dwukropku wymien plik z którego budujesz - czyli w twoim wypadku main.cpp. inaczej to nie ma sensu bo receptura sprawdza czasy utowrzenia plików asdw.*, dlatego zawsze go bedziesz budował mimo braku zmian. Tl, dr: zamien wszystkie asdw na main, usuń wszystko po ostatnim "main.cpp".

Missing separator. Stop.

0

Twój make powinien wyglądać podobnie:

all : program

program : main.o
  g++ main.o -o program

main.o : main.cpp
  g++ -c main.cpp

Krótkie wytłumaczenie:
w linijce "all: program" mówisz: "to jest główna recepta, zacznij od komendy "program"".
w linijce "program: main.o" mówisz: "to jest komenda "program", zależy od pliku main.o, który robię niżej."
w linijce "main.o: main.cpp" make sprawdza, czy plik main.cpp jest nowszy od main.o, jeżeli tak to buduje main.o za pomocą komendy "g++ -c main.cpp" w poniższej linijce.

"Missing separator oznacza, że przed receptami (czyli g++ ... ) masz zły znak. Najedz kursorem przed g++, ciapnij backspace aż dotrzesz do początku liniki, potem nacisnij tab. Walnij "make" w shellu. Jezeli tak nie zadziała to spróbuj z dwoma lub czterema spacjami zamiast taba.

Ps. Napisany wyżej przeze mnie mejk działa ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1