私は、信じられないほど基本的な GLUT OpenGL プログラムの OpenGL リファレンス ガイドの最初のプログラムをコピーしました。
Code::Blocks IDE を使用し、Ubuntu 12.10 で実行しています。
fglrx ドライバーで ATI Mobile Radeon 4670 を使用しています。
このコードを使用して、環境が適切に機能していることを確認しています。コードは次のとおりです。
#include <GL/glut.h>
#include <stdlib.h>
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex3f(0.25,0.25,0.0);
glVertex3f(0.75,0.25,0.0);
glVertex3f(0.75,0.75,0.0);
glVertex3f(0.25,0.75,0.0);
glEnd();
glFlush();
}
void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250,250);
glutInitWindowPosition(100,100);
glutCreateWindow("hello");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
これが実行できる最も単純なコードであり、コンパイルできることを願っています。include/
およびlib/
ディレクトリ (/usr/include
および)を使用したいくつかの finangling の後、/usr/lib/x86_64-linux-gnu
エラーなしでコンパイルすることができました。
Code::Blocks 内から、またはターミナルを使用して実行すると、セグメンテーション エラーが発生します。ウィンドウの影が表示されますが、それが破棄されてプログラムが終了します。
本当に奇妙な部分は、デバッグしようとするときです。Code::Blocks内から「デバッグ」を選択するか、コマンドラインでgdbを自分で使用して(実行gdb <program>
してからrun
)、問題なく実行されます。エラーや問題はまったく発生せず、期待どおりに実行されます。
これにより、問題が何であるかを理解することが非常に困難になります。生成されたコアファイルが正常に実行されることをgdbにチェックさせましたが、それが言ったのは
Program terminated with signal 11, Segmentation fault.
#0 0x00007f9ee3a5815c in ?? ()
本当に大きな助け。何か案は?設定に問題がある可能性がありますので、質問してください。