você pode ignorar o makefile que vem no projeto e compilar 'direto', segue abaixo um makefile bem simples/direto.
#
# arquivo makefile 'flat'
#
CC=gcc
CFLAGS=-std=c99 -DLUA_COMPAT_5_2 -O2
OBJ=lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o
all:
$(CC) $(CFLAGS) -c -o lapi.o lapi.c
$(CC) $(CFLAGS) -c -o lcode.o lcode.c
$(CC) $(CFLAGS) -c -o lctype.o lctype.c
$(CC) $(CFLAGS) -c -o ldebug.o ldebug.c
$(CC) $(CFLAGS) -c -o ldo.o ldo.c
$(CC) $(CFLAGS) -c -o ldump.o ldump.c
$(CC) $(CFLAGS) -c -o lfunc.o lfunc.c
$(CC) $(CFLAGS) -c -o lgc.o lgc.c
$(CC) $(CFLAGS) -c -o llex.o llex.c
$(CC) $(CFLAGS) -c -o lmem.o lmem.c
$(CC) $(CFLAGS) -c -o lobject.o lobject.c
$(CC) $(CFLAGS) -c -o lopcodes.o lopcodes.c
$(CC) $(CFLAGS) -c -o lparser.o lparser.c
$(CC) $(CFLAGS) -c -o lstate.o lstate.c
$(CC) $(CFLAGS) -c -o lstring.o lstring.c
$(CC) $(CFLAGS) -c -o ltable.o ltable.c
$(CC) $(CFLAGS) -c -o ltm.o ltm.c
$(CC) $(CFLAGS) -c -o lundump.o lundump.c
$(CC) $(CFLAGS) -c -o lvm.o lvm.c
$(CC) $(CFLAGS) -c -o lzio.o lzio.c
$(CC) $(CFLAGS) -c -o lauxlib.o lauxlib.c
$(CC) $(CFLAGS) -c -o lbaselib.o lbaselib.c
$(CC) $(CFLAGS) -c -o lbitlib.o lbitlib.c
$(CC) $(CFLAGS) -c -o lcorolib.o lcorolib.c
$(CC) $(CFLAGS) -c -o ldblib.o ldblib.c
$(CC) $(CFLAGS) -c -o liolib.o liolib.c
$(CC) $(CFLAGS) -c -o lmathlib.o lmathlib.c
$(CC) $(CFLAGS) -c -o loslib.o loslib.c
$(CC) $(CFLAGS) -c -o lstrlib.o lstrlib.c
$(CC) $(CFLAGS) -c -o ltablib.o ltablib.c
$(CC) $(CFLAGS) -c -o lutf8lib.o lutf8lib.c
$(CC) $(CFLAGS) -c -o loadlib.o loadlib.c
$(CC) $(CFLAGS) -c -o linit.o linit.c
# biblioteca estatica
ar rcu liblua.a $(OBJ)
ranlib liblua.a
# interpretador lua
$(CC) $(CFLAGS) -c -o lua.o lua.c
$(CC) -o lua lua.o liblua.a -lm
# compilador luac
$(CC) $(CFLAGS) -c -o luac.o luac.c
$(CC) -o luac luac.o liblua.a -lm
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lapi.o lapi.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lcode.o lcode.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lctype.o lctype.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ldebug.o ldebug.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ldo.o ldo.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ldump.o ldump.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lfunc.o lfunc.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lgc.o lgc.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o llex.o llex.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lmem.o lmem.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lobject.o lobject.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lopcodes.o lopcodes.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lparser.o lparser.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lstate.o lstate.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lstring.o lstring.c
In function ‘createstrobj’,
inlined from ‘luaS_createlngstrobj’ at lstring.c:148:17,
inlined from ‘luaS_newlstr’ at lstring.c:206:10:
lstring.c:142:17: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
142 | getstr(ts)[l] = '\0'; /* ending 0 */
In file included from ldebug.h:11,
from lstring.c:17:
lstring.c: In function ‘luaS_newlstr’:
lstate.h:213:18: note: at offset 0 to object ‘ts’ with size 24 declared here
213 | struct TString ts;
| ^~
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ltable.o ltable.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ltm.o ltm.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lundump.o lundump.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lvm.o lvm.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lzio.o lzio.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lauxlib.o lauxlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lbaselib.o lbaselib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lbitlib.o lbitlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lcorolib.o lcorolib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ldblib.o ldblib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o liolib.o liolib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lmathlib.o lmathlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o loslib.o loslib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lstrlib.o lstrlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ltablib.o ltablib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lutf8lib.o lutf8lib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o loadlib.o loadlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o linit.o linit.c
# biblioteca estatica
ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o
ranlib liblua.a
# interpretador lua
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lua.o lua.c
gcc -o lua lua.o liblua.a -lm
# compilador luac
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o luac.o luac.c
gcc -o luac luac.o liblua.a -lm
#
# instalação padrão
#
$ tar zxvf lua-5.3.6.tar.gz
$ cd lua-5.3.6/src
$ make clean generic
rm -f liblua.a lua luac lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o lua.o luac.o
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lapi.o lapi.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lcode.o lcode.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lctype.o lctype.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o ldebug.o ldebug.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o ldo.o ldo.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o ldump.o ldump.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lfunc.o lfunc.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lgc.o lgc.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o llex.o llex.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lmem.o lmem.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lobject.o lobject.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lopcodes.o lopcodes.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lparser.o lparser.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lstate.o lstate.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lstring.o lstring.c
In function ‘createstrobj’,
inlined from ‘luaS_createlngstrobj’ at lstring.c:148:17,
inlined from ‘luaS_newlstr’ at lstring.c:206:10:
lstring.c:142:17: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
142 | getstr(ts)[l] = '\0'; /* ending 0 */
In file included from ldebug.h:11,
from lstring.c:17:
lstring.c: In function ‘luaS_newlstr’:
lstate.h:213:18: note: at offset 0 to object ‘ts’ with size 24 declared here
213 | struct TString ts;
| ^~
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o ltable.o ltable.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o ltm.o ltm.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lundump.o lundump.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lvm.o lvm.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lzio.o lzio.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lauxlib.o lauxlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lbaselib.o lbaselib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lbitlib.o lbitlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lcorolib.o lcorolib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o ldblib.o ldblib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o liolib.o liolib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lmathlib.o lmathlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o loslib.o loslib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lstrlib.o lstrlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o ltablib.o ltablib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lutf8lib.o lutf8lib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o loadlib.o loadlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o linit.o linit.c
ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o
ranlib liblua.a
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o lua.o lua.c
gcc -std=gnu99 -o lua lua.o liblua.a -lm
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -c -o luac.o luac.c
gcc -std=gnu99 -o luac luac.o liblua.a -lm