Tworzę modelowy program ładujący / przeglądający w C ++ z OpenGL i próbuję przenieść mój kod z systemu Windows (visual studio) do Ubuntu.
Korzystając z GDB, pojawia się błąd segmentacji:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
Uszkodzenie występuje nawet wtedy, gdy nie jest wywoływana żadna funkcja glut. To znika dopiero wtedy, gdy usuwam z kodu jakiekolwiek wzmianki o nadmiarze.
Rozumiem, że istnieją różnicemiędzy kompilatorem Microsoft i GNU, a także inne zachowania ogólnie dla niektórych bibliotek pomiędzy dwoma systemami operacyjnymi. Jednak jest to niezwykle kłopotliwe, że dostaję segfault na samym początku programu, w przeciwieństwie do błędu kompilacji.
Sprawdziłem, że glut działa z innymi programami, użyj odpowiedniego nagłówka glut dla linux (#include) i upewnij się, że uwzględniłeś flagi glut podczas kompilacji:
main: main.o g++ -o main main.o -lGL -lGLU -lglut -std=gnu++11
main.o: main.cpp loader.h geom.h g++ -c main.cpp -lGL -lGLU -lglut
-std=gnu++11
Odpowiedzi:
0 dla odpowiedzi № 1Okazało się, że problem jest znany z OpenGL i Ubuntu. Próba połączenia String i / lub przyszłości wraz z biblioteką OpenGL spowoduje złamanie programu.