[英]g++ ld can't find RInside symbols for x86_64 architecture
當我嘗試使用g ++編譯RInside示例文件時,我收到鏈接器錯誤,指出無法找到符號。 任何援助將不勝感激。
R版本2.13.1安裝在Mac OS X 10.5上。 Rcpp和RInside包含的文件已被復制到usr / include目錄中。 使用g ++的-I和-L修飾符包含R頭文件和庫,如下所示:
$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
有人能告訴我我做錯了什么以及如何解決它? 任何援助將不勝感激。
我知道這是一個非常古老的問題,但我補充說這是為了幫助別人。
我花了幾個小時看這個。 我有一台Mac OS(Mountain Lion 10.7)。 我下載了RInside,轉到示例並鍵入make
但仍然遇到此ld
錯誤。
新線程中安裝的xcode, gcc和其他許多嘗試都沒有幫助。
我已經使用RStudio安裝了Rcpp。
但以下工作對我有用 。 從我的Mac終端我重新安裝了Rcpp和RInside,正如Dirk建議的那樣:
R CMD INSTALL ./Downloads/Rcpp_0.10.3.tar.gz
R CMD INSTALL ./Downloads/RInside_0.2.10.tar.gz
現在,當我進入examples目錄並鍵入make
,它順利運行。
希望這可以幫助使用OS X的人,他們來看這個問題。
通常與鏈接不適合構建目標體系結構的庫有關。 檢查框架設置以查看它的構建體系結構(i386比x86_64更常見)。 這也可能意味着lib不是為32/64位構建的。 如果您有權訪問源代碼,可以考慮重新編譯它。
您使用的編譯器(看似64位)和找到的庫(顯然是32位)之間的不匹配會導致鏈接嘗試失敗。 最簡單的解決方案可能是從源代碼重新安裝Rcpp和RInside; 這將為編譯器重建文件(大概是64位)。
正常構建能力的“證明”由CRAN檢查提供, 例如在Windows檢查中進行R-patched ,您甚至可以自己上傳到win-builder 。
隨着幾個OS X用戶正在閱讀它,rcpp-devel列表可以為此提供進一步的幫助。 我似乎記得在OS X上構建源代碼是推薦的解決方案但是我的合着者在OS X上工作而不是我:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.