簡體   English   中英

g ++ ld找不到x86_64架構的RInside符號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM