g++ ld 找不到用于x86_64架构的 RInside 符号
g++ ld can't find RInside symbols for x86_64 architecture
当我尝试用g++编译RInside示例文件时,我得到一个链接器错误,说符号(s)找不到。如有任何帮助,不胜感激。
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
现在,当我进入示例目录并输入make
时,它工作得很顺利。
通常与不适合构建目标体系结构的链接库有关。检查框架设置以查看构建它的体系结构(i386比x86_64更常见)。这也可能意味着lib不是为32/64位构建的。如果您能访问源代码,可以考虑重新编译它。
使用的编译器(似乎是64位)和找到的库(显然是32位)之间不匹配,导致链接尝试失败。最简单的解决方案可能是从源代码重新安装Rcpp和RInside;这将为编译器重新创建文件(可能是64位)。
正常构建能力的"证明"由CRAN检查提供,例如Windows上的r补丁检查,您甚至可以自己上传到win-builder。
rcpp-devel列表可以提供进一步的帮助,因为许多OS X用户正在阅读它。我似乎记得在OS X上,从源代码构建是推荐的解决方案,但这是我在OS X上工作的合著者,而不是我:)
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 使用gcc从静态链接的文件中查找可选符号
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- VC++本机单元测试,找不到调试符号
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 检查TCHAR数组输入是否为带符号整数C++
- 用符号版本替换对函数的所有调用
- 未解析的外部符号_MsiLocateComponentW@12.
- 如何打印boost多精度128位无符号整数
- C++模板函数,用于比较任何无符号整数和有符号整数
- g++ ld 找不到用于x86_64架构的 RInside 符号