2013-11-21 2 views
6

gcc -o rand_beta rand_beta.cを使用してRhとRmath.hヘッダファイルをインクルードする行を含むターミナルでCコード(rand_beta)をコンパイルしようとしていますので、R内からコードを呼び出すことができます。 しかし、 :R.hとRmath.hのヘッダファイルのインストール/検索方法は?

rand_beta.c:1:15: error: R.h: No such file or directory 
rand_beta.c:2:19: error: Rmath.h: No such file or directory 

Rと一緒にインストールする必要があるこれらのヘッダーファイルは私のシステムにはないと思われます。

私のコンピュータにRヘッダファイルを見つける方法を教えてもらえますか?どこかからダウンロードする必要がありますか?

+1

あなたはどのオペレーティングシステムを使用していますか?あなたはどのようにRをインストールしましたか? –

+0

ヘッダーはソースファイルです。ほとんどのインストーラはソースコードを "インストール"しません。彼らはビルドされたバイナリをインストールするだけです。 –

+0

Rcppタグを削除すると、Rcppパッケージとは何の関係もありません。 –

答えて

5

まず、これらのヘッダーを見つける必要があります。私のシステムでは、彼らはyumでインストールされたR-develパッケージの一部である/usr/lib64/R/include/R.hにあります。

gcc-Iオプションを使用して、gccの場所を教えてください。

gcc -I/usr/lib64/R/include -o rand_beta rand_beta.c 

はその後、あなたはまた、おそらくあなたのコンパイルされたプログラムを実行するためにLD_LIBRARY_PATHをエクスポートする必要があります。

LD_LIBRARY_PATH=/usr/lib64/R/lib ./rand_beta 
+2

皆さん、本当に私はR CMD SHLIB rand_beta.cを代わりに使用する必要があったと思います。これはRに必要な.soファイルを作成するためです。 – user3018658

1

もう一つの方法は、直接インクルードパスを使用するために、いくつかの環境変数を指定することです:

export CPATH=/usr/lib64/R/include/ 
export C_INCLUDE_PATH=/usr/lib64/R/include/ 
export CPLUS_INCLUDE_PATH=/usr/lib64/R/include/ 
export GCC_INCLUDE_DIR=/usr/lib64/R/include/ 

これは正常に実行されます。

gcc -o rand_beta rand_beta.c 
4

他の回答は、あなたのRインストールディレクトリがどこにあるかを推測しようとします。しかし、より堅牢なソリューションがあります。それはどこにそれを見つけるためにRR.homeコマンドを使用します。私のシステムでR.hRmath.hを含むフォルダである

> R.home('include') 
/usr/lib64/R/include 

を。あなたのフォルダは別の場所にあるかもしれません。

関連する問題