g++でのライブラリを指定する順番でハマる

g++で簡単なプログラムを実行するのに, "/usr/lib/libgsl.so: undefined reference to 'cblas_ctrmv'"などのエラーが大量に出て困った.

調べると以前までは特に問題なかったが, ライブラリオプションを指定する順番によってエラーが生じるらしい.

つまり, "-lm -lgslcblas -gsl"はだめだが, "-lgsl -lgslcblas -lm"なら大丈夫だった.

ちなみにautotoolsを使おうと思い, また同様の問題が生じた. 生成されるMakefile内のLIBSは, configure.inもしくは.acに書くAC_CHECK_LIBで指定したのと"逆順"となるようなので注意が必要.