2016年5月8日日曜日

Ubuntuにおける算術演算子のエラー(C言語)

Ubuntuにおいてgccでリンクオプションを使う場合に気をつけること

#include 
#include 

#define LEN 10

int main() {

 int i;

 for(i = 0; i <= LEN; i++) {
  printf("%d = %f\n", i, sqrt((double)i));
 }

 return 0;
}

Cで算術演算子を使用する時にコンパイルできない場合リンクオプションを指定してコンパイルすればいいのですが、 Ubuntuにおいて算術演算子を使用した時に、-lmオプションを使用しても

$ gcc -lm -o sqrt sqrt.c

 `sqrt' に対する定義されていない参照です
というエラーが出る場合があります。

この場合gccでは-lオプションは最後に付けることでコンパイルできました。

$ gcc -o sqrt sqrt.c -lm

他のディストリビューションでは前につけてもコンパイルできたのですがUbuntuでは位置も関係有るようです。