0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C++でgnuplotを使う時に詰まった時

Posted at

# 状況
大学でC++でグラフを描画する課題がでた。gnuplotを使うといいらしくてそれでやってみようということにした。自分の実行環境はmac os Mojave
brewでgnuplot自体はすぐにインストールできたものの、ターミナルからコマンドで使うのではなくてC++で書いて呼び出して使いたい。だけどそこからがめっちゃ大変だった。。。。

エラーポイント

①aquatermとxquartzとかいうのをインストールしてからgnuplotをインストールできない

まず、いろいろgnuplotのインスト方法を調べているとどうやらaquatermとxquartzをインストールしてからgnuplotをインストールする記事が多かった。なぜそうするのかはよくわからん。そこでこれらをインストールしてから

$ brew install gnuplot --with aqua

などとやると、aquatermなんてねえよと言われる。

brew list

として確認してもaquatermなどどこにもない。つまり認識されていないということらしい。
そこでどうすればいいかを書いてる記事もあったが何だかめんどくさそうだった。
そこで。

brew install gnuplot

で普通にインストールできた。
なんだよaquatermとかいらねえのかよ、でも後からこのせいでエラーでたら怖いなとは思いつつとりあえずターミナルから実行できるようになった。

で下のようにパイプを通して描画したいというのが本題

##②duplicate symbol 問題


#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   FILE *gp;

   gp=popen("gnuplot -persist","w");

   fprintf(gp,"plot sin(x)\n");

   pclose(gp);
   return 0;
}

これを実行してうまく行けばグラフが出力される。はずだが。。。

duplicate symbol '_main' in:
    /var/folders/q3/y699mygx6qqg53lzw8ls14_r0000gn/T//cc9moxpo.o
    /var/folders/q3/y699mygx6qqg53lzw8ls14_r0000gn/T//ccbmRw03.o
duplicate symbol '_main' in:
    /var/folders/q3/y699mygx6qqg53lzw8ls14_r0000gn/T//cc9moxpo.o
    /var/folders/q3/y699mygx6qqg53lzw8ls14_r0000gn/T//cc9moxpo.o
ld: 2 duplicate symbols for architecture x86_64
collect2: error: ld returned 1 exit status

というエラーがでた。
つまりシンボルが重複しているということらしい。/var/folders/q3/y699mygx6qqg53lzw8ls14_r0000gn/T//cc9moxpo.oと /var/folders/q3/y699mygx6qqg53lzw8ls14_r0000gn/T//ccbmRw03.o
で被ってるからだめだと。
で、いろいろ調べてもいろいろ試してみて結局わかったのは結局他のC++のファイルと同じディレクトリで実行していることが原因だった(gnuplot使ってないC++のファイルも同じエラーがでたので気づいた)
新たにディレクトリを作成して実行するとできた。

##まとめ
gnuplotは別にaquatermとか使わなくていいぞ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?