Strona 1 z 2
Brak reguł do wykonania obiektu... --- c++, anjuta
: 05 maja 2008, 21:27
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ź
.
: 05 maja 2008, 23:36
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.
: 06 maja 2008, 21:11
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
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.
: 07 maja 2008, 15:38
autor: mikolajs
w podawanym przez siebie przykładzie dopisz na końcu linę:
kompiluj w konsoli:
i następnie uruchamiasz:
: 09 maja 2008, 10:42
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
: 09 maja 2008, 14:00
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.
: 12 maja 2008, 23:40
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!
: 13 maja 2008, 18:25
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.
: 15 maja 2008, 13:05
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
: 15 maja 2008, 13:26
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.