M1 Macで、OpenGL GLUTを使ってコンパイルする
2024.04.27
どもです。
最近プライベートでは、Rust Actix Web使って、サーバー開発を行っていたのですが、ちょっと飽きてきたので、再びOpenGLの開発でもと。
やはり、しばらく開発を離れるとすぐ忘れるお年頃になるので、忘れないようにと備忘録程度の記事です。また、新規のWindows機も届いて、WSL2、C/C++環境、OpenGL環境と整えてきたので(ちょっとどうしようか悩んではいる。)そちらも、そのうちまとめようかと。
GCCコマンドでOpenGL GLUTをコンパイル
まず、Mac OS X では標準でOpenGLとGLUT が使え、Developer Toolsをインストールすればコンパイル環境も一応揃う。とりあえず、gccでのコンパイル環境が整っていれば、M1 Macでは、
gcc -framework GLUT -framework OpenGL <program file> -o <output file>
で、コンパイルが可能。-o <output file> は省略可能なので、例えば、
gcc -framework GLUT -framework OpenGL program.c
を実行すると、a.out ファイルが出力され、./a.out コマンド入力で実行。
無事、OpenGL GLUTを使用しているプログラムもコンパイルでき実行できる。
が、ネットで上がっていたり、書籍に書かれていたりするプログラムは、
#include <GL/glut.h>
この形でGLUTをincludeされいるので、そのままコンパイルしようとすると、
fatal error: GL/glut.h: No such file or directory 5 | #include <GL/glut.h> | ^~~~~~~~~~~
headerファイルが無いよと。コンパイルエラーになる。
それを回避するため、headerファイルのシンボリックリンクを貼る形となるのですが、
mkdir /usr/local/include/GL cd /usr/local/include/GL/ sudo ln -s /System/Library/Frameworks/GLUT.framework/Headers/glut.h .
最近では、Headersが存在していなくシンボリックリンクを貼れなかっりする。
どの場所に存在するのかちょっと探れていないのですが、回避策として、
#include <GL/glut.h>
を、
#include <GLUT/glut.h>
に変更すれば、無事GLUTのヘッダーファイルもincludeされ、コンパイルできる。
しかし、できればプログラムを変更せずそのままコンパイルできれば良いなと思っており、GLUT Headersの行方を探っている今日このごろです。