热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

R语言更换最新的C++编译器

先前推介的Rcppforeveryone书中介绍了更换编译器的方法。2.1.4UsingothercompilersinstalledbyyourselfIfyouinstalle


先前推介的Rcpp for everyone书中介绍了更换编译器的方法。


2.1.4 Using other compilers installed by yourself


If you installed other compiler (g++, clang++) different from above, create the following file under the user’s home directory. Then set environment variables in the file.


Linux, Mac


.R/Makevars


Windows


.R/Makevars.win


Example settings of environmental variables


CC=/opt/local/bin/gcc-mp-4.7


CXX=/opt/local/bin/g++-mp-4.7


CPLUS_INCLUDE_PATH=/opt/local/include:$CPLUS_INCLUDE_PATH


LD_LIBRARY_PATH=/opt/local/lib:$LD_LIBRARY_PATH


CXXFLAGS= -g0 -O2 -Wall


MAKE=make -j4


Building R for Windows 上面的Rtools有一段时间没有更新,里面的GCC还是4.9.3版。一直想让Rcpp用上最新的GCC:sunglasses: :sunglasses: :sunglasses: ,但是没有真正动手������



PS C:\Users\cheng> gcc -v
gcc version 4.9.3 (x86_64-posix-seh, Built by MinGW-W64 project)

在更换编译器前利用 Using Rcpp with C++11, C++14 and C++17 中的例子测试了一下Rtools中的C++编译情况。这个例子是C++14中的特性。结果宣告失败。


> Rcpp::cppFunction("auto doubleMe(const int &x) { return x + x; }")
c:/Rtools/mingw_64/bin/g++ -I"F:/program/R/include" -DNDEBUG -I"F:/program/R/library/Rcpp/include" -I"C:/Users/cheng/AppData/Local/Temp/RtmpYrb9qf/sourceCpp-x86_64-w64-mingw32-0.12.12" -I"d:/Compiler/gcc-4.9.3/local330/include" -O2 -Wall -mtune=core2 -c file310c11566111.cpp -o file310c11566111.o
file310c11566111.cpp:6:1: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
auto doubleMe(const int &x) { return x + x; }
^
file310c11566111.cpp:6:27: error: top-level declaration of 'doubleMe' specifies 'auto'
auto doubleMe(const int &x) { return x + x; }
^
file310c11566111.cpp:6:27: error: storage class 'auto' invalid for function 'doubleMe'
file310c11566111.cpp:11:1: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
auto doubleMe(const int& x);
^
file310c11566111.cpp:11:27: error: top-level declaration of 'doubleMe' specifies 'auto'
auto doubleMe(const int& x);
^
file310c11566111.cpp:11:27: error: storage class 'auto' invalid for function 'doubleMe'
make: *** [file310c11566111.o] Error 1
Warning message:
运行命令'make -f "F:/program/R/etc/x64/Makeconf" -f "F:/program/R/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="sourceCpp_2.dll" WIN=64 TCLBIN=64 OBJECTS="file310c11566111.o"'的状态是2
Error in sourceCpp(code = code, env = env, rebuild = rebuild, cacheDir = cacheDir, :
Error 1 occurred building shared library.

新的C++编译器选择 MinGW-w64



  • Rtools使用的编译器就是MinGW-w64,只是版本较旧

  • Mingw-w64更新快,及时跟进GCC


下载 MinGW-w64 的安装文件,点击mingw-w64-install.exe文件,具体选项选择如下。



安装需要一段时间,安装完毕如下。



直接复制到Rtools文件夹中,并且把原先的mingw_64备份处理,刚复制来的mingw64重命名为mingw_64。具体如下。



MinGW-w64更新完毕。检测一下版本号。


PS C:\Users\cheng> gcc -v
gcc version 7.1.0 (x86_64-win32-seh-rev2, Built by MinGW-W64 project)

重新用 Using Rcpp with C++11, C++14 and C++17 中的例子测试新版的C++编译器。运算顺利出结果。


> Rcpp::cppFunction("auto doubleMe(const int &x) { return x + x; }")
> doubleMe(1L)
[1] 2

编译R语言第三方包不会有问题吧?试一试。


重新安装R语言数据整理利器data.table,顺利编译,安装成功。


remove.packages("data.table")
install.packages("data.table", type = "source",
repos = "http://Rdatatable.github.io/data.table")

本次更新C++编译器重在 尝鲜、折腾 ,GCC版本从4.9.3飞到7.1.0,实用价值:smile::smile::smile:



本次折腾环境:


win10 15063.540
R 3.4.0



推荐阅读
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
author-avatar
pop6959140
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有