Brak regu

Potrzebujesz pomocy z C, C++, perl, python, itp.
a2m
Posty: 13
Rejestracja: 20 sierpnia 2007, 22:37
Lokalizacja: Poznań

Brak reguł do wykonania obiektu... --- c++, anjuta

Post autor: a2m »

Cześć, mam problem przy kompilowaniu programów. Kupiłem w końcu "Symfonię C++ Standard" J.Grębosza (jestem na 9 str.) i chciałbym jednocześnie z czytaniem pisać sobie zamieszczone tam programy-przykłady. Problem pojawia się, gdy po zapisaniu pliku źródłowego w Anjucie chcę skompilować np. coś takiego:
pierwszy.cxx:

Kod: Zaznacz cały

#include <iostream>
int main()
{
	std::cout << "Hello World!";
}
W obszarze komunikatów wyskakuje mi kilka linii, min.:

Kod: Zaznacz cały

make: ***Brak reguł do wykonania obiektu `pierwszy.o' Stop.
Przyznam się, że nie rozumiem o jakie reguły tu chodzi.

Z góry dzięki za odpowiedź :)

.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Moglbys pokazac te wszystkie linie, ale stawiam na to ze nei masz autmake i autoconf. Anjuta dziala tak, ze uzywa tych dwoch do wygeneriwabua skryptu configure, ktory jest uruchamiany w celu utworzenia makefile - czyli standardowa procedura kompilacji w linuksie.

Jezeli nie masz tych dwoch pakietow albo masz cos skopane w ich konfiguracji, to makefile nie zostanie utworzone,albo bedzie bledne i make nie wie jak kompilowac projekt.

Jezeli nie chcesz sie z tym szarpac i piszesz tylko w konsoli to anjuta ci niepotrzebna, wystarczy mingw developer studio chociazby, gdize skompilujesz to bez tworzenia configure. Albo sam kompiluj z palca w konsoli.
a2m
Posty: 13
Rejestracja: 20 sierpnia 2007, 22:37
Lokalizacja: Poznań

Post autor: a2m »

Wszystkie linie komunikatu:

Kod: Zaznacz cały

Building in directory: /home/a2m/Projects/Symfonia/pierwszy
make pierwszy.o
make: *** Brak reguł do wykonania `pierwszy.o'. Stop.
Completed unsuccesful
Total time taken: 0 secs
Pakiety autoconf i automake mam zainstalowane od dawna. Nic nie mieszałem w ich konfiguracji, wydawało mi się że jak się je zainstaluje to automatycznie będą skonfigurowane.

gdy wydam komendę w konsoli

Kod: Zaznacz cały

g++ pierwszy.cxx
to zostaje utworzony plik a.out, który mogę wykonać, lecz w terminalu momentalnie znika mi okno, a w konsoli (w sensie Ctrl+Alt+1, bez X'ów) po wypisaniu zadanego tekstu wylogowuje mnie z użytkownika i pojawia się standardowa linijka "debian login: "

Gdy zmienię rozszerzenie pliku z .cxx na .cpp to po otworzeniu w anjucie i wydaniu polecenia kompilacji pojawiają sie następujące komunikaty:

Kod: Zaznacz cały

Building in directory: /home/a2m/Projects/Symfonia/pierwszy
make pierwszy.o
Building pierwszy.cpp --> pierwszy.o
Completed succesful
Total time taken: 0 secs
nie wiem jednak co to jest ten plik *.o. Gnome we właściwościach mówi że to "kod w postaci skompilowanej" nie mam pojęcia co to jest, ale nie jest wykonywalne.

Co do okienkowości Anjuty, teraz nie jest mi to potrzebne, chcę poznać podstawy C++. Jednak docelowo będę programować aplikacje mniej lub bardziej "zokienkowane", więc chciałbym od początku pracować w Anjucie.
mikolajs
Posty: 33
Rejestracja: 04 lutego 2008, 10:06
Lokalizacja: Gdañsk

Post autor: mikolajs »

w podawanym przez siebie przykładzie dopisz na końcu linę:

Kod: Zaznacz cały

retrun 0;
kompiluj w konsoli:

Kod: Zaznacz cały

 g++ program.cpp -o program
i następnie uruchamiasz:

Kod: Zaznacz cały

./program
a2m
Posty: 13
Rejestracja: 20 sierpnia 2007, 22:37
Lokalizacja: Poznań

Post autor: a2m »

mikolajs, tyle to wiem i mogę doczytać w manie. Dziwiłem się tylko dlaczego nie działa mi Anjuta. Może w przyszłości do tego dojdę.

Tak teraz myślę, czy czasem rzeczywiście nie mam czegoś źle skonfigurowanego w pakietach kozpilująco-programistycznych. Np. instalator sterownika grafiki Nvidia (zamknięty) nie wykrywa mi obecności nagłówków jądra pomimo tego że mam je zainstalowane a gdy w następnym kroku próbuje je skompilować sam to nie znajduje odpowiedniej wersji gcc. Macie jakies pomysły?

Dzięki za odzew :)
mikolajs
Posty: 33
Rejestracja: 04 lutego 2008, 10:06
Lokalizacja: Gdañsk

Post autor: mikolajs »

Używałem wcześniej kdevelop, ale obecnie wolę obecnie używać Kate. Kdevelop kompiluje bez problemu proste projekty, ale niestety czasami przy czymś większym pojawiają się problemy i trzeba ręcznie modyfikować pliki konfiguracyjne. Znacznie łatwiej jest mi korzystać z narzędzia qmake w konsoli. Rozgryzanie problemów niedziałającej kompilacji w IDE wydaje mi się zbyt czasochłonne i nie warte wysiłku.
a2m
Posty: 13
Rejestracja: 20 sierpnia 2007, 22:37
Lokalizacja: Poznań

Post autor: a2m »

Ok. dzięki. Póki co muszę rzucić programowanie. Nagrzebałem w systemie i muszę się pozbierać z powrotem do kupy ;P
Pozdrawiam!
mlyczek
Junior Member
Posty: 979
Rejestracja: 02 sierpnia 2006, 19:17

Post autor: mlyczek »

a2m pisze:Gdy zmienię rozszerzenie pliku z .cxx na .cpp to po otworzeniu w anjucie i wydaniu polecenia kompilacji pojawiają sie następujące komunikaty:

Kod: Zaznacz cały

Building in directory: /home/a2m/Projects/Symfonia/pierwszy 
make pierwszy.o 
Building pierwszy.cpp --> pierwszy.o 
Completed succesful 
Total time taken: 0 secs
nie wiem jednak co to jest ten plik *.o. Gnome we właściwościach mówi że to "kod w postaci skompilowanej" nie mam pojęcia co to jest, ale nie jest wykonywalne.
Gnome dobrze mówi. Jest to kod w postaci wykonywalnej. Przy pisaniu wiekszych progamów kod rozdziela się na więcej plików, żeby było czytelniej. Później każdy z tych plików kompiluje się do plików *.o, a na końcu gcc to wszystko ładnie zlinkuje i utworzy jeden wykonywalny plik z całym programem. Make używa się właśnie do tego, aby wygodnie kompilować tylko te części programu, które zostały zmienione (ma to niebotyczne znaczenie przy testowaniu i poprawianiu programów, których kompilacja w całości trwa kilka godzin). Przy jednoplikowym programie (jak wyżej) nie ma to sensu, jednak ten mechanizm jest w Anjucie włączony i używany przy każdym projekcie. Ucząc się programować lepiej po prostu w Kate i kompiluj ręcznie z konsoli. Jest to wygodniejsze i nie ma tyle bałaganu z pomocniczymi plikami z Anjuty.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Ucząc się programować lepiej po prostu w Kate i kompiluj ręcznie z konsoli. Jest to wygodniejsze i nie ma tyle bałaganu z pomocniczymi plikami z Anjuty.
No ja nie do konca sie z tym zgodze, uczac sie programowac warto nauzyc sie tez autmake/autoconf, tyle ze posiada toto prawie tak samo rozbudowana skladnie jak C/C++

Do bezproblemowego kompilowania bez autotools polecam MinGW developer studio (potrafi tez wygenerowac makefile, ale nie uzywa automake i autoconf, wiec nie ma configure) lub Code::Blocks (kompiluje sam i nie generuje zupelnie nic, zadnych pomocniczych plikow dokladnie tak jak kazde IDE windowsowe)

W ogole nie lubie Anjuty, bo momentami sprawia wrazenie lekko niedopracowanej, od kiedy przerzucilem sie na Code::Blocks nie zaluje, a do pisania aplikacji okienkowych w wxWidgets nie ma lepszego narzedzia
mlyczek
Junior Member
Posty: 979
Rejestracja: 02 sierpnia 2006, 19:17

Post autor: mlyczek »

giaur pisze:No ja nie do konca sie z tym zgodze, uczac sie programowac warto nauzyc sie tez autmake/autoconf, tyle ze posiada toto prawie tak samo rozbudowana skladnie jak C/C++
Zgoda, ale nie na samym początku. Kompilując przykłady z Symfonii, czy HelloWorld'a przedstawionego wyżej nie trzeba pisać makefile, ani tym bardziej uczyć się autoconfa. To przydaje się przy pisaniu już rozbudowanych aplikacji. A po co teraz na początku nauki c++ mieszać sobie w głowie i uczyć się równolegle czegoś drugiego równie rozbudowanego. Chodziło mi o to, że do takiej nauki na początku w zupełności wystarcza, a wręcz ułatwia pisanie w Kate (lub innym prostym edytorze tekstu z kolorowaniem składni, Kate to tylko przykład) i kompilowanie w konsoli ręcznie. Przy okazji nauczy się komend kompilatora i będzie później wiedział co robią te wszystkie narzędzia automatyczne. Jak już opanuje c++ na tyle, że będzie pisał większe rzeczy, to łatwiej przyjdzie mu opanowanie autoconfa.
ODPOWIEDZ