校舎PCなら下記コマンドで簡単にminilibxが使えます。
cc main.c -Imlx -lmlx -framework OpenGL -framework AppKit
一方で私用PCだと色々と準備が必要でした。
手順をまとめたので、ご参考になれば幸いです。
実行環境
・ VirtualBox 7.0
・ CentOS 7
1. 関連パッケージ のインストール
sudo yum install -y gcc make xorg-x11-server-devel libXext-devel libbsd-devel
sudo apt install -y gcc make xorg libxext-dev libbsd-dev
2. minilibx のインストール
intraの課題ページから”minilibx-linux.tgz”をインストールして展開する
minilibxをmakeしてアーカイブを作成する
※"libmlx_linux.a"が作成される
3. ファイルの格納
minilibxのヘッダーとアーカイブを下記ディレクトリに格納する
/usr/local/include/mlx.h
※mlx.hをincludeディレクトリに格納
/usr/local/lib/libmlx_linux.a
※libmlx_linux.aをlibディレクトリに格納
4. main関数の実装
#include <stdio.h>
#include <X11/X.h>
#include <X11/keysym.h>
#include "mlx.h"
int event_handler(int key, void *mlx)
{
printf("called\n");
return (0);
}
int main(void)
{
void *mlx;
void *mlx_win;
mlx = mlx_init();
mlx_win = mlx_new_window(mlx, 300, 300, "Hello World");
mlx_hook(mlx_win, KeyPress, KeyPressMask, event_handler, mlx);
mlx_loop(mlx);
}
5. makefileの作成
# minilibx_test
NAME = minilibx_test
SRCS = main.c
OBJS = $(SRCS:.c=.o)
# Compiler
CC = cc
LIBX_FLAGS = -lmlx_Linux -lXext -lX11
# Rules
all: $(NAME)
$(NAME): $(OBJS)
$(CC) $(OBJS) $(LIBX_FLAGS) -o $(NAME)
clean:
$(RM) $(OBJS)
fclean: clean
$(RM) $(NAME)
re: fclean all
.PHONY: all clean fclean re
6. 動作確認
makeして実行ファイルを起動するとウィンドウが表示されます。
キーボードを叩く度に”called”とメッセージがターミナルに表示されれば、
minilibxの初期設定は成功です。お疲れ様でした。
7. 参考サイト
https://reactive.so/post/42-a-comprehensive-guide-to-so_long
https://harm-smits.github.io/42docs/libs/minilibx/getting_started.html