Вообще говоря, не все компасы и не всегда указывали на север.
Самый древнейший известный компас назывался ксынань — «ведающий югом», и указывал он как раз на юг. Роль стрелки выполнял черенок ложки, которая свободно вращалась вокруг оси.
Дело в том, что Земля генерирует магнитное поле. Оно действует на движущиеся электрические заряды и тела, обладающие магнитным моментом.
Стрелка компаса обладает как раз таким магнитным моментом, и поэтому разворачивается вдоль силовых линий магнитного поля Земли.
Впрочем, на картинке заметно, что магнитное поле не однородно. Разные аномалии — месторождения руд, полюса, ферромагнитные материалы тоже влияют на расположение силовой линии и, значит, на стрелку компаса. Стрелка располагается по силовой линии и направлена к противоположно направленному полюсу.