1

RInsideサンプルファイルをg++でコンパイルしようとすると、シンボルが見つからないというリンカーエラーが発生します。どんな援助もいただければ幸いです。

Rバージョン2.13.1はMacOSX10.5にインストールされています。RcppおよびRInsideインクルードファイルがusr/includeディレクトリにコピーされました。Rヘッダーとライブラリは、次のようにg++の-Iおよび-L修飾子を使用して含まれています。

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

rinside_sample0.cppファイルは、以下に示すRInsideパッケージで提供されるサンプルです。

// -*- 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);
}

g ++でコンパイルしようとすると、以下に示すエラーが発生します。

ld: symbol(s) not found for architecture x86_64

誰かが私が間違っていることとそれを修正する方法を教えてもらえますか?どんな援助もいただければ幸いです。

4

3 に答える 3

2

これは非常に古い質問であることは知っていますが、他の人に役立つ場合に備えてこれを追加しています。

私はこれを調べるのに何時間も費やしました。Mac OS (Mountain Lion 10.7) を使用しています。RInside をダウンロードし、サンプルに移動して入力しましたが、このエラーmakeが発生し続けました。ld

このスレッドで言及されているxcode、gcc の新規インストール、およびその他の多くの試みは役に立ちませんでした。

RStudioを使用してRcppをインストールしました。

ただし、次のことがうまくいきました。Mac ターミナルから、Dirk が上記で提案したように、Rcpp と RInside を次のように再インストールしました。

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

ここで、examples ディレクトリに移動して と入力makeすると、問題なく動作しました。

これが、この質問を見ている OS X を使用している人に役立つことを願っています。

于 2013-05-28T23:25:41.880 に答える
1

使用されているコンパイラ (一見 64 ビット) と見つかったライブラリ (明らかに 32 ビット) の間に不一致があり、リンクの試行が失敗します。最も簡単な解決策は、おそらくソースから Rcpp と RInside の両方を再インストールすることです。これにより、コンパイラ (おそらく 64 ビット) 用のファイルが再作成されます。

通常のビルド能力の「証明」は、たとえばこの R-patched on Windows checkなどの CRAN チェックによって提供され、自分で win-builderにアップロードすることもできます。

rcpp-devel リストは、何人かの OS X ユーザーが読んでいるので、これに関してさらに役立つ可能性があります。OS X ではソースからのビルドが推奨される解決策であることを思い出すようですが、OS X で作業しているのは私ではなく共著者です :)

于 2011-07-30T13:41:23.420 に答える
1

通常、ビルド ターゲット アーキテクチャに適していないライブラリのリンクに関係しています。フレームワークの設定をチェックして、ビルド対象のアーキテクチャを確認します (i386 は x86_64 よりも一般的です)。これは、lib が 32/64 ビットの両方でビルドされていないことを意味する場合もあります。ソースにアクセスできる場合は、再コンパイルすることを検討してください。

于 2011-07-30T02:59:28.230 に答える