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

SFML na linux mint w Code::Blocks wczoraj działał, a dziś nie ;/

Object Storage Arubacloud
+1 głos
570 wizyt
pytanie zadane 30 kwietnia 2015 w Systemy operacyjne, programy przez Pan Kulomb Pasjonat (18,630 p.)
edycja 30 kwietnia 2015 przez Pan Kulomb
Witam, wczoraj skonfigurowałem sobie projekt SFML na podstawie tego:

http://www.sfml-dev.org/tutorials/2.2/start-cb.php

Po wciśnięciu F9 program się uruchomił. Dziś natomiast nie. Oto logi kompilacji:

-------------- Build: Debug in Tower Defence (compiler: GNU GCC Compiler)---------------

g++ -Wall -DSFML_STATIC -g -std=c++11 -I../../Liby/SFML-2.2/include -c "/home/kulomb/Dokumenty/CodeBlocks/Tower Defence/main.cpp" -o obj/Debug/main.o
g++ -L../../Liby/SFML-2.2/lib -o "bin/Debug/Tower Defence" obj/Debug/main.o   -lsfml-graphics -lsfml-window -lsfml-system
Output file is bin/Debug/Tower Defence with size 177,96 KB
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
 

-------------- Run: Debug in Tower Defence (compiler: GNU GCC Compiler)---------------

Checking for existence: /home/kulomb/Dokumenty/CodeBlocks/Tower Defence/bin/Debug/Tower Defence
Executing: /home/kulomb/Dokumenty/CodeBlocks/Tower\ Defence/bin/Debug/Tower\ Defence  (in /home/kulomb/Dokumenty/CodeBlocks/Tower Defence/.)
Process terminated with status -1 (0 minute(s), 0 second(s))
 

Z tego co tu widzę w ścieżce do pliku są powstawiane znaki \ . Może ktoś to wytłumaczyć?

Gdy kompiluję w trybie Release w konsoli wyświetla się "Segmentation fault".

Po ponownym uruchomieniu komputera działa o_O

1 odpowiedź

+1 głos
odpowiedź 1 maja 2015 przez MrWeb Stary wyjadacz (10,200 p.)
edycja 1 maja 2015 przez MrWeb

Znaki "\ " to spacja ;)

Kompilator nie lubi ścieżek ze spacjami ("Tower Defence") więc zamienia je sobie na ciąg znaków ("Tower\ Defence"), nic ważnego :)

Tryb relase to specjalny tryb kompilacji używany przy tzw final buildach - ostatecznym pliku wykonywalnym tworzonego programu. obstawiam, że Code::Blocks ma inne parametry polecenia g++ dla Debug i Relase (tak jest w eclipse) przez co przełączenie projektu w tryb relase wykrzacza wszystko. Radzę Ci go zostawić na czas pisania projektu w trybie debug i dopiero gdy nic już nie będziesz poprawiał, skompilujesz projekt dla trybu relase.

Segmentation fault to błąd najczęściej spowodowany odwołaniem się do złego miejsca w pamięci np bad pointer (usunąłeś obiekt, ale potem i tak coś z nim robisz) dziwne, że wyskakuje po uruchomieniu programu który nie ma żadnych błędów.

Jeśli nie ruszałeś kodu z poradnika, to wszystko powinno działać, chyba że podczas kompilacji / linkowania podałeś złe ścieżki dostępu do libsów lub ich nie uwzględniłeś. Proponuję po kolei kompilować pliki i na żywo sprawdzać wynik konsoli.

Przenieś się do katalogu z plikiem main.cpp w konsoli (polecenie cd wink ) tak, by po wywołaniu komendy ls wyświetliło Ci plik który chcesz skompilować.

krok 1 wpisz w konsoli

g++ -std=c++11 -c -o "main.o" ./main.cpp

 

krok 2 wpisz w konsoli

g++ -std=c++11 -L/usr/local/lib -libsfml-system -libsfml-window -libsfml-graphics -o "main" ./main.o

 

krok 3 wpisz w konsoli

./game

 

Jeśli krok 1 wywalił błędy to znaczy że gdzieś w kodzie są błędy składni lub niepoprawne wywołania poleceń lub funkcji itd

jeśli krok 2 wywalił błędy to najprowdopodobniej nie widzi bibliotek ("unresolved reference ...")

jeśli krok 3 wywalił błędy to znaczy że kod zawiera tzw błędy logiczne

komentarz 1 maja 2015 przez MrWeb Stary wyjadacz (10,200 p.)

Krok 2 może nie zadziałać, ponieważ widziałem że liby sfml na twoim PC nie są w domyślnej ścieżce (usr/local/lib albo /usr/lib)

U ciebie jest jakaś ścieżka ../../Liby/SFML-2.2/lib która trochę mało mi mówi...

Znajdź pliki libsfml-system.so, libsfml-window.so i libsfml-graphics.so i podaj je wraz ze ścieżkami bezwzględnymi do linkera np. u mnie jest tak:

g++ -std=c++11 -L/usr/local/lib /usr/local/lib/libsfml-system.so.2 /usr/local/lib/libsfml-window.so.2 /usr/local/lib/libsfml-graphics.so.2 -o "main" ./main.o

w poleceniu g++ bezpośrednio wypisałem lokalizację libów SFML

/usr/local/lib/libsfml-system.so.2

/usr/local/lib/libsfml-window.so.2

/usr/local/lib/libsfml-graphics.so.2

Problem jest w tym, że nie wiem gdzie Ty masz te pliki ;)

Podobne pytania

+1 głos
1 odpowiedź 407 wizyt
pytanie zadane 1 maja 2015 w C i C++ przez Pan Kulomb Pasjonat (18,630 p.)
0 głosów
1 odpowiedź 5,217 wizyt
pytanie zadane 21 sierpnia 2015 w Systemy operacyjne, programy przez Maniti Obywatel (1,220 p.)
0 głosów
2 odpowiedzi 901 wizyt
pytanie zadane 5 listopada 2017 w C i C++ przez noel1402 Użytkownik (630 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...