Witam, kiedyś w szkole uczyłem się programować w c++ lecz za wiele z tego nie pozostało mi w głowię;/ teraz przesiadłem się na Ubuntu zainstalowałem NetBeans'a i nie bardzo potrafię się odnaleźć w tym programie. Gdy utworzyłem nowy projekt i w tym projekcie nowy plik c++ wpisałem jak na początku poradnika pierwszy program tzn:
kompilator wywala mi błędy, i podkreśla mi biblioteki jak by ich nie było...
Running "/usr/bin/make -f Makefile CONF=Debug" in /home/mario/NetBeansProjects/nowa
/usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
make[1]: Wejście do katalogu `/home/mario/NetBeansProjects/nowa'
/usr/bin/make -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/nowa
make[2]: Wejście do katalogu `/home/mario/NetBeansProjects/nowa'
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/newmain.o.d
gcc -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/newmain.o.d -o build/Debug/GNU-Linux-x86/newmain.o newmain.cpp
In file included from /usr/include/c++/4.2/backward/iostream.h:31,
from newmain.cpp:9:
/usr/include/c++/4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
newmain.cpp: In function `int main(int, char**),:
newmain.cpp:15: błąd: expected primary-expression before `:, token
newmain.cpp:15: błąd: expected `;' before `:, token
make[2]: *** [build/Debug/GNU-Linux-x86/newmain.o] Błąd 1
make[2]: Opuszczenie katalogu `/home/mario/NetBeansProjects/nowa'
make[1]: *** [.build-conf] Błąd 2
make[1]: Opuszczenie katalogu `/home/mario/NetBeansProjects/nowa'
make: *** [.build-impl] Błąd 2
Build failed. Exit value 2.
proszę o pomoc lub jakiś poradnik jak się odnaleźć w tym programie:) z c++ już wtedy sobie poradzę:)
Nie znam się jeszcze za bardzo na C++ (sam uczę się go od września dopiero na zajęciach, i sam nie wszystko z niego łapie), lecz doprowadziłem kod do działania.
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
cout << "Hello World";
cout<<endl;
return 0;
}
Nie jestem w 100% pewien, ale wydaje mi się, że biblioteki jakie chciałeś użyć, są bibliotekami Windows. W Linuksie ich nie ma, przez co nie można ich użyć np. <conio.h> - biblioteka często dołączana pod Windows - w Linuksie jej nie ma. Sam jeszcze nie wiem, czym biblioteki, które używam pod Win na zajęciach, zastąpić pod Ubuntu, ale sprawa z ich dołączaniem tak właśnie wygląda.
Pora zmienić poradnik na porządną książkę lub kurs internetowy. Tak się programowało z 10 lat temu, obecnie mamy nowy standard i używa się przestrzeni nazw, co wymusza stosowanie nowych plików nagłówkowych (bez rozszerzenia h np. <cstdlib> zamiast <stdlib.h>) zresztą wszystko jest w komunikacie:
#warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>
Ale naprawdę nie to jest przyczyną błędu kompilatora (to wyżej to tylko ostrzeżenie).
Gdzieś niepotrzebnie umieściłeś : (pewnie zamiast ; ), ale nam dałeś już poprawną wersję
Parafrazując Pospieszalskiego "Warto czytać"
Program nie linkuje się z biblioteką libstdc++, co wygląda na błąd w samym NetBeans.
Proponuje uczyć się programowania bez jakiegokolwiek IDE, a programy kompilować z konsoli. Bo zamiast uczyć się programować musisz zmagać się z działaniem jakiegoś IDE. Polecam Kate jako edytor z łatwym dostępem do konsoli.
Można pisać i kompilować programy w C++ bez bezpośredniego obcowania z konsolą, używając zwykłego Gedita tylko. Aby kompilować programy bezposrednio z Gedita, trzeba uaktywnic wtyczkę Narzędzia Zewnętrzne (Edycja->Preferencje->Wtyczki), a następnie stworzyć nowe Narzędzie Zewnętrzne (pod nazwą np. Kompiluj C++). Jak to zrobić, opisałem tutaj: http://www.ubuntu.pl/forum/viewtopic.php?t=86458
oki ale jednak chciałbym znależć przyczynę tego... bo wiem że program działa poprawnie bo sprawdziłem ten sam pod windowsem w devc++ i było wszystko oki, więc może standardowo netbeans nie ma bibliotek potrzebnych do kompilacji porogramu?? i może jakoś trzeba je dodać lub coś? netbeansa ściągałem ze strony producenta i ściągałem pod c++ więc powinno być dobrze a nie jest... i wydaje mi się że problem tkwi w tych właśnie bibliotekach bo przy nich pokazuje się wykrzyknik
mardul pisze:oki ale jednak chciałbym znależć przyczynę tego... bo wiem że program działa poprawnie bo sprawdziłem ten sam pod windowsem w devc++ i było wszystko oki, więc może standardowo netbeans nie ma bibliotek potrzebnych do kompilacji porogramu?? i może jakoś trzeba je dodać lub coś? netbeansa ściągałem ze strony producenta i ściągałem pod c++ więc powinno być dobrze a nie jest... i wydaje mi się że problem tkwi w tych właśnie bibliotekach bo przy nich pokazuje się wykrzyknik
Aby skonfigurować w NetBeans'ie kompilator g++, musisz wejść do menu: Tools->Options, a tam wybrać "zakładkę" C/C++ a w niej zakładkę Build Tools. W polu C++ Compiler wpisz ścieżkę do kompilatora g++. Jeśli nie wiesz gdzie on się znajduje to w konsoli wpisz: which g++ i przepisz tą ścieżkę (przeważnie: /usr/bin/g++).
Aby poprawnie się to kompilowało, zawsze dodawaj do projektu nowe pliki z kategorii C++ Files (File->New File), są one zawsze zapisywane z rozszerzeniem cpp, cxx lub podobnym (domyślnie skojarzone z g++).
a gdy wydaję polecenie g++ -o newmain.cpp
wyskakuje: g++: brak plików wejściowych
To napewno kwestia ustawienia netbeans, tylko jak gość nie potrafi skompilować w konsoli przepisując prawidłowo polecenia z forum, to raczej trudno mu będzie ustawić netbeansa