Попробуйте сделать последнюю часть:
run:
LD_LIBRARY_PATH=. ./allocator
С другой стороны:
run:
export LD_LIBRARY_PATH=.; \
./allocator
Проблема в том, что когда у вас есть несколько строк команд для цели, make запускает каждую строку в своей собственной оболочке. Таким образом, переменные окружения, установленные в одной строке (в одной оболочке), не наследуются оболочками, запущенными для других строк. Решение состоит в том, чтобы поместить все это в одну строку (таким образом, это относится к одному экземпляру оболочки), либо записав команду в виде одной строки, либо используя продолжение строки.