gccのコマンドラインオプションの並び順

Objective-Cの勉強をしていて、gccでいざコンパイルと思ったら、リンクの段階でエラーが出るでる。調べてみたら、gccコマンドラインオプションには順番があって、リンカ(ld)に関するオプションである-lや-Lは、後ろに付ける必要があるとのこと。
どうやらリンカは、オブジェクトファイルのシンボル名解決をするとき、不明なシンボル名があると、「その場所以降」からシンボル名見つけて解決する動作をするからのようです。

×:
$ gcc -o foo -lobjc foo.m

◯:
$ gcc -o foo foo.m -lobjc