2011-07-30 57 views
1

我收到一個鏈接器錯誤,指出在嘗試使用g ++編譯RInside示例文件時找不到符號。任何援助將不勝感激。g ++ ld無法找到適用於x86_64架構的RInside符號

R版本2.13.1安裝在Mac OS X 10.5上。 Rcpp和RInside包含文件已被複制到usr/include目錄。 ř頭文件和庫已經使用-I和g ++的-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); 
} 

當我嘗試用克至++編譯我得到一個錯誤,如下圖所示:

ld: symbol(s) not found for architecture x86_64 

有人能告訴我什麼,我做錯了,如何解決?任何援助將不勝感激。

回答

2

我知道這是一個非常古老的問題,但我添加這個以防萬一它幫助別人。

我花了幾個小時看着這個。我有一個Mac OS(山獅10.7)。 我下載了RInside,去了例子並輸入make但是一直得到這個ld錯誤。

新安裝的xcode,gcc as mentioned in this thread和許多其他嘗試沒有幫助。

我已經使用RStudio安裝了Rcpp。

但是以下爲我工作。 從我的Mac終端我重新安裝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,誰來看這個問題。

1

通常與鏈接不適合構建目標架構的庫有關。檢查框架設置以查看其構建的體系結構(i386比x86_64更常見)。這也可能意味着lib不是爲32/64位構建的。如果你有權訪問源,可以考慮重新編譯它。

+0

如何檢查框架設置以查看其構建的體系結構? – Aperium

+0

嘗試shell:文件DIR/TO/Lib.a – namar0x0309

1

你使用的編譯器(貌似64位)和找到的庫(顯然是32位)之間的不匹配會導致鏈接嘗試失敗。最簡單的解決方案可能是從源重新安裝Rcpp和RInside;這將爲編譯器重新創建文件(推測是64位)。

正常建立能力的「證明」由CRAN檢查提供,如eg this R-patched on Windows check,您甚至可以自己上載到win-builder

由於幾個OS X用戶正在閱讀它,因此rcpp-devel列表可能對此有進一步的幫助。我似乎記得,在OS X的源碼建立是推薦的解決方案,但它是我的合作者誰在OS X上工作,不是我:)

相關問題