#!/bin/bash set -e echo "=== Build WITHOUT LTO ===" g++ -std=c++17 -O2 -c foo.cpp -o foo.o g++ -std=c++17 -O2 -c main.cpp -o main.o g++ -O2 foo.o main.o -o app_nolto -lm echo "Created app_nolto" echo "" echo "=== Build WITH LTO ===" g++ -std=c++17 -O2 -flto -c foo.cpp -o foo_lto.o g++ -std=c++17 -O2 -flto -c main.cpp -o main_lto.o g++ -O2 -flto foo_lto.o main_lto.o -o app_lto -lm echo "Created app_lto" echo "" echo "=== Compare binary sizes ===" ls -l app_nolto app_lto echo "" echo "=== Run both ===" echo -n "no-lto: "; ./app_nolto echo -n "lto: "; ./app_lto