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では位置も関係有るようです。

1 件のコメント:

Pythonで地図空間データを扱う⑤

ベースの地図が出来た所で、他のデータを被せてみます。 国土地理院の  500mメッシュ別将来推計人口データ  を使用します。 同じく神奈川県のデータ  500m_mesh_suikei_2018_shape_14.zip をダウンロードします。 ベースの地図データと同じ場所に展開...