2013-11-21 17 views
6

Sto cercando di compilare un codice C (chiamato rand_beta) nel terminale che contiene le righe per includere i file di intestazione Rh e Rmath.h utilizzando gcc -o rand_beta rand_beta.c in modo da poter quindi chiamare il codice dall'interno R. Tuttavia, ricevo i messaggi di errore :Come installare/individuare i file di intestazione R.h e 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 

sembra che questi file di intestazione che dovrebbe venire installato con R non sono sul mio sistema.

Qualcuno può guidarmi su come posso ottenere il mio computer per trovare i file di intestazione R? Devo scaricarli da qualche parte?

+1

In quale sistema operativo ci si trova? Come hai installato R? –

+0

Le intestazioni sono file sorgente. Quasi tutti gli installer non "installano" il codice sorgente; installano solo i binari compilati. –

+0

Rimozione dei tag rcpp in quanto ciò non ha assolutamente nulla a che fare con il pacchetto Rcpp. –

risposta

5

Prima è necessario individuare quelle intestazioni. Nel mio sistema, si trovano in /usr/lib64/R/include/R.h, parte del pacchetto R-devel che ho installato con yum.

Quindi utilizzare l'opzione -I di gcc per comunicare a gcc dove trovarli.

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

Poi, sarà anche molto probabilmente bisogno di esportare LD_LIBRARY_PATH per eseguire il programma compilato:

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

Grazie a tutti, in realtà suppongo di aver solo bisogno di usare R CMD SHLIB rand_beta.c, poiché questo crea il file .so di cui ho bisogno per R. – user3018658

1

Un altro modo è quello di specificare alcune variabili d'ambiente di utilizzare direttamente il percorso includono:

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/ 

Questo dovrebbe quindi funzionare correttamente:

gcc -o rand_beta rand_beta.c 
4

Le altre risposte cercano di indovinare dove si trova la directory di installazione R. Ma c'è una soluzione più robusta. Utilizzare il comando R.home in R per trovarlo dovunque sia:

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

Questa è la cartella che contiene R.h e Rmath.h sul mio sistema. La tua cartella potrebbe essere in un posto diverso.

Problemi correlati