2011-07-30 3 views
1

Je reçois une erreur de linker dire que le symbole (s) ne peut pas être trouvé lorsque je tente de compiler un exemple de fichier RInside avec g ++. Toute aide serait appréciée.g ++ ld ne peut pas trouver des symboles RInside pour l'architecture x86_64

version R 2.13.1 est installé sur Mac OS X 10.5. Rcpp et RInside incluent les fichiers ont été copiés dans le répertoire usr/include. R-têtes et les bibliothèques ont été inclus en utilisant les modificateurs -I et -L de g ++ comme indiqué:

$g++ -I/Library/Frameworks/R.framework/Headers -L/Library/Frameworks/R.framework/Libraries rinside_sample0.cpp 

Le fichier rinside_sample0.cpp est un échantillon fourni avec le paquet RInside, illustré ci-dessous:

// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8; -*- 
// 
// Simple example showing how to do the standard 'hello, world' using embedded R 
// 
// Copyright (C) 2009 Dirk Eddelbuettel 
// Copyright (C) 2010 Dirk Eddelbuettel and Romain Francois 
// 
// GPL'ed 

#include <RInside.h>     // for the embedded R via RInside 

int main(int argc, char *argv[]) { 

    RInside R(argc, argv);    // create an embedded R instance 

    R["txt"] = "Hello, world!\n"; // assign a char* (string) to 'txt' 

    R.parseEvalQ("cat(txt)");   // eval the init string, ignoring any returns 

    exit(0); 
} 

Lorsque je tente de compiler avec g ++ j'obtiens une erreur, illustré ci-dessous:

ld: symbol(s) not found for architecture x86_64 

quelqu'un peut-il me dire ce que je fais mal et comment y remédier? Toute aide serait appréciée.

Répondre

2

Je sais que c'est une très vieille question, mais j'ajoute ceci au cas où aide quelqu'un d'autre.

J'ai passé des heures et des heures à regarder cela. J'ai un Mac OS (Mountain Lion 10.7). J'ai téléchargé RInside, est allé aux exemples et a tapé make mais a continué à obtenir cette erreur ld.

Les nouvelles installations de xcode, gcc as mentioned in this thread et de nombreuses autres tentatives n'ont pas aidé.

j'avais déjà CRPP installé à l'aide rstudio.

Cependant ce qui suit a fonctionné pour moi. De mon Mac Terminal I ré-installé CRPP et RInside comme Dirk suggère ci-dessus en utilisant:

R CMD INSTALL ./Downloads/Rcpp_0.10.3.tar.gz 
R CMD INSTALL ./Downloads/RInside_0.2.10.tar.gz 

Maintenant, quand je suis allé dans le répertoire des exemples et dactylographié make, cela a fonctionné sans accroc.

J'espère que cela aidera quelqu'un qui utilise OS X, qui se penche sur cette question.

1

doit généralement faire avec lien entre libs qui ne sont pas adaptés pour objectif de construire l'architecture. Vérifiez les paramètres du framework pour voir l'architecture pour laquelle il est construit (i386 est plus commun que x86_64). Cela peut également signifier que lib n'est pas construit pour les deux 32/64 bits. Pensez à le recompiler si vous avez accès aux sources.

+0

Comment puis-je vérifier les paramètres du cadre pour voir quelle architecture il est construit? – Aperium

+0

try dans le shell: fichier DIR/TO/Lib.a – namar0x0309

1

Vous avez un décalage entre le compilateur utilisé (apparemment 64 bits) et la bibliothèque trouvée (apparemment 32 bits) qui fait échouer le lien tentative. La solution la plus simple est probablement de réinstaller à la fois Rcpp et RInside à partir des sources; cela va recréer des fichiers pour le compilateur (vraisemblablement 64 bits). La preuve de la capacité normale de construction est fournie par les vérifications CRAN sous la forme eg this R-patched on Windows check, et vous pouvez même télécharger le win-builder vous-même.

La liste CRPP-devel peut être une aide supplémentaire à ce que plusieurs utilisateurs d'OS X sont la lecture. Je semble me rappeler que sur OS X les versions à partir de la source sont la solution recommandée mais c'est mon co-auteur qui travaille sur OS X pas moi :)

Questions connexes