Kiedyś tego używałem, niestety nie mogę znaleźć swojego kodu z przykładem, ale znalazłem kogoś innego: https://github.com/KrzaQ/BootContest/blob/master/snake/Makefile
Tutaj jest to akurat bootowalny snake w C++ mieszczący się w jednym sektorze (512B).
Parametr -Wl pozwala przekazać jakieś opcje do linkera. Zamiast tego, możesz też po prostu napisać skrypt linkera i też będzie dobrze. Nie wiem do czego potrzebujesz płaskiej binarki, ale jeżeli również do bootloadera, to te adresy (0x7C00) możesz pozostawić. Jeśli nie, to dostosuj sobie wedle własnych potrzeb.