yuanfan 嗯,你来开(火)车,大家搭便车顺道解决别的问题,也挺好。
yuanfan 很多 R 函数的名称都借用了 Linux/Unix 的系统命令名称,你说的 grep / cat 都是,还有 unlink / tar / iconv / seq / paste 等等。
gcc 是 C 语言的一种编译器,而一门语言通常可以有多种编译工具,只要这些工具遵循语言的设定规则即可(就像 Markdown 也可以多种工具来转换它)。同一种工具,通常也可以在不同操作系统下使用,但可执行文件肯定是不一样的。
R 包得编译通常并不复杂:纯 R 代码的包,其实都谈不上什么编译,就是把一些 R 函数和对象以一种二进制格式打包进压缩包(如 .zip);含有需要编译的代码的包(如 C / C++ / Fortran 代码),才需要额外的工具链(如 gcc / clang)把那些底层语言编译为可调用的动态链接库(Windows 下的 .dll 文件或 *nix 下的 .so 文件)。
这些底层事务已经超出了我的知识范围,我只是知道个大概。要是我没说清楚,就等更专业的人士来解释和更正了。我在 xfun 中的 C 代码都是请别人帮忙写的,每次一遇到问题我就得四处求人。