• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z instalacją SFML na Linuxie w Code::Bocks

Object Storage Arubacloud
0 głosów
406 wizyt
pytanie zadane 14 marca 2018 w C i C++ przez Perseusz Bywalec (2,190 p.)
edycja 15 marca 2018 przez Perseusz

No więc na Linuxie jestem noga, od tego trzeba zacząć, a i z programowaniem dopiero zaczynam...

Na Windowsie już trochę w SFML kodowałem, ale na Linuxie mam problem z konfiguracją. O ile kompilowanie kodu wychodzi bez błędów to gdy próbuje włączyć to taki oto efekt:

Process terminated with status -1 (0 minute(s), 0 second(s))

Nie znalazłem żadnego błędu z takim kodem w internecie (możliwe że za płytko szukałem). SFML jest zainstalowany, użyłem terminala. Czy jest skompilowany nie wiem, kompletnie tego nie rozumiem. Do projektu w code::blocks podlinkowałem libsfml-graphics, win. i sys. . Mam katalog /include/SFML  w libie już nie (o ile powinien być)

Jak to rozwiązać i czy mógłby ktoś jak to zrobić w miarę prosto ew. podesłać jakiś w miare aktualny link

Tak wogóle Linux Mint 18.3

z góry dzięki!smiley

EDIT: Problem rozwiązany całkowicie :)  chodziło o konsolę poleceń w Code::Blocks , była ustawiona na xterm, dlatego nic nie mogłem włączyć. Teraz mam gnome terminal i wszystko działa. Sorki za nieporozumienia i problem

komentarz 14 marca 2018 przez Michał Gibas Pasjonat (19,610 p.)
Coś jest nie tak z twoim programem. Kiedy w programie zwracasz -1? Przy ładowaniu jakieś tekstury czy czegoś? Spróbuj użyć jakiegoś debugger np. gdb.
komentarz 14 marca 2018 przez Perseusz Bywalec (2,190 p.)

Ok, właśnie skompilowałem go w terminalu i  w sumie bez tej wzmianki o debuggerze dalej bym się męczył w grzebanie z plikami. Mam taki efekt:

g++ -g main.cpp
/tmp/ccazbqh4.o: In function `main':
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:5: undefined reference to `sf::String::String(char const*, std::locale const&)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:5: undefined reference to `sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:5: undefined reference to `sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:6: undefined reference to `sf::CircleShape::CircleShape(float, unsigned long)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:7: undefined reference to `sf::Color::Green'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:7: undefined reference to `sf::Shape::setFillColor(sf::Color const&)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:9: undefined reference to `sf::Window::isOpen() const'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:12: undefined reference to `sf::Window::pollEvent(sf::Event&)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:15: undefined reference to `sf::Window::close()'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:18: undefined reference to `sf::Color::Color(unsigned char, unsigned char, unsigned char, unsigned char)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:18: undefined reference to `sf::RenderTarget::clear(sf::Color const&)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:19: undefined reference to `sf::RenderStates::Default'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:19: undefined reference to `sf::RenderTarget::draw(sf::Drawable const&, sf::RenderStates const&)'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:20: undefined reference to `sf::Window::display()'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:5: undefined reference to `sf::RenderWindow::~RenderWindow()'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:24: undefined reference to `sf::RenderWindow::~RenderWindow()'
/home/adam/Programowanie/C++/Workspace/SFUCKINGML/main.cpp:5: undefined reference to `sf::RenderWindow::~RenderWindow()'
/tmp/ccazbqh4.o: In function `sf::CircleShape::~CircleShape()':
/usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `vtable for sf::CircleShape'
/usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `vtable for sf::CircleShape'
/usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `sf::Shape::~Shape()'
collect2: error: ld returned 1 exit status

Czyli pewnie coś w codeblocksie źle, chociaż i to nie działa. A plik to właściwie taki test czy działa, -1 wywalało przy "Run" ... to jet debugger prawda?

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 14 marca 2018 przez adrian17 Ekspert (344,860 p.)

Mam katalog /include/SFML

"Zainstalowałeś" SFMLa przez pobieranie go z internetu, zamiast używając repozytorium:

sudo apt install libsfml-dev

g++ -g main.cpp

Musisz jeszcze dolinkować SFML:

g++ -g main.cpp -lsfml-graphics -lsfml-window

 

komentarz 14 marca 2018 przez Perseusz Bywalec (2,190 p.)
Nie jestem pewien czy działa...

Skopiowałem twój kod i dopisałem -lsfml-system , bo chyba zapomniałeś i teraz w terminalu nie wyskakuje nic żadnych błędów, ale tak samo nic się nie wyświetla... w sensie żadne okienko ani nic - teraz skopiowałem te z kursu cpp0x.
1
komentarz 14 marca 2018 przez adrian17 Ekspert (344,860 p.)

 i teraz w terminalu nie wyskakuje nic żadnych błędów, ale tak samo nic się nie wyświetla

Bo g++ tylko kompiluje i buduje plik wykonywalny - jeśli nie ma żadnych problemów, to nie ma nic do powiedzenia i cicho robi swoje.

Zbudowana binarka domyślnie się nazywa a.out (bo nie podałeś innej nazwy), spróbuj ją odpalić.

./a.out

 

komentarz 14 marca 2018 przez Perseusz Bywalec (2,190 p.)
Chyba jestem ślepy... Wszystko działa! Taka nowa chęć do życia odrasta bo miałem już pomysł na jakąś gierke i wkońcu moge zacząć działąć :D Dzięki Wielkiee!
komentarz 14 marca 2018 przez Perseusz Bywalec (2,190 p.)
Tak wogóle to mój wniosek jest taki, że to problem po między Code::Blocks a debuggerem, zgadza sie?
komentarz 14 marca 2018 przez adrian17 Ekspert (344,860 p.)

Tak wogóle to mój wniosek jest taki, że to problem po między Code::Blocks a debuggerem, zgadza sie?

Um... ale jaki problem? Bo jedyny problem jaki widziałem w tej dyskusji to SFML pobrany z internetu zamiast z repo. Może czegoś nie zauważyłem?

komentarz 14 marca 2018 przez Perseusz Bywalec (2,190 p.)
Z tym to akurat troche trafiłeś a troche nie, bo aktualnie to SFML jeszcze przed wątkiem był pobrany poprzez terminal Co prawda wcześniej się troche kłuciłem z tymi plikami z internetu, ale CB reinstalowałem, SFML też i to także przez komendę w Code Blocks dalej nie działa
komentarz 14 marca 2018 przez adrian17 Ekspert (344,860 p.)

przez komendę w Code Blocks dalej nie działa

Dobra, pogubiłem się.

`g++` kompiluje i tworzy plik wykonywalny. Czy on działa?

C::B "nie działa" - czy kompiluje? Czy powstaje plik wykonywalny? Czy się uruchamia? Czy się uruchamia w debuggerze?

komentarz 14 marca 2018 przez Perseusz Bywalec (2,190 p.)
No nie jestem najlepszym tłumaczem...

Ok sam właśnie sprawdziłem...

CodeBlocks:

-> kompiluje

-> tworzy plik (plik działa - właśnie sprawdziłem)

/z terminala także jest to możliwe

-> plik się nie uruchamia z poziomu C::B , ale ręcznie owszem, tj. robi to co powinien

 

Sorka za problemy, w każdym razie moje pomogłeś rozwiązać :)
komentarz 14 marca 2018 przez Perseusz Bywalec (2,190 p.)

No i reinstalowałem przez komendę SFML, a w CodeBlocks plik dalej nie działa

tiaa interpunkcja troche widać u mnie leży

0 głosów
odpowiedź 16 maja 2018 przez Damian.W Początkujący (320 p.)

Witam mam problem który mógłbym tak samo nazwać więc podpinam się tutaj.

Chciałbym zainstalować SFML 2.5 lub jakieś nowsze od 2.3.

Obecnie pracowałem na 2.3 Instalowałem poprzez terminal "sudo apt-get install libsfml-dev"

w C::B wybierałem nowy projekt potem SFML i wszystko mi elegancko działało pomimo ze w różnych tutorialach było napisane że to nie działa i żeby robić pusty projekt linkować itp.

Otóż SFML 2.5 nie zainstaluje w ten sposób bo nie mam go repozytoriach jest tylko 2.3.

Więc ściągnąłem paczkę 2.5 na Linux-a 64 bit teraz muszę ręcznie linkować itp. ok podlinkowałem program nawet się kompiluje ale w konsoli wywala dużo błędów i kończy się CORE DUMPED!

*** Error in `./sff': free(): invalid pointer: 0x0000000001fc6398 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7feda0ba87e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7feda0bb137a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7feda0bb553c]
./sff[0x401630]
./sff[0x4015ff]
./sff[0x40158e]
./sff[0x401504]
./sff[0x401483]
./sff(_ZN2sf6StringD1Ev+0x18)[0x40144a]
./sff[0x40120d]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7feda0b51830]
./sff[0x401069]

To początek błędów później jest cała encyklopedia z memory map.

Nie mam już pomysłów co dalej. Proszę o jakieś porady.

Linux version 4.13.0-41-generic (buildd@lgw01-amd64-028) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)) #46~16.04.1-Ubuntu SMP Thu May 3 10:06:43 UTC 2018

 

Pozdrawiam Damian

 

Podobne pytania

0 głosów
2 odpowiedzi 304 wizyt
pytanie zadane 23 listopada 2016 w C i C++ przez dorgovor Użytkownik (580 p.)
0 głosów
1 odpowiedź 330 wizyt
pytanie zadane 14 maja 2018 w C i C++ przez Emil Panecki Bywalec (2,100 p.)
+1 głos
0 odpowiedzi 329 wizyt

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...