I found the answer in this post here:
ATmega328P USART Transmit character printed repeatedly
Changing my Makefile to the following solved my problem:
avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p serial-print.c -o serial-print.bin
avr-objcopy -O ihex -R .eeprom serial-print.bin serial-print.hex
sudo avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:serial-print.hex