1

我正在尝试在 Mountain Lion 10.8.2 上安装 PL/R,我已经从 r-project 安装了 R 2.15.3,从 KyngChaos 安装了 PostgreSQL 9.1。我从http://www.joeconway.com/plr/获得了 PL/R 8.3.0.14 。我已将展开的文件夹放入 /usr/local/pgsql/share/contrib 并 cd'd 进入该文件夹。

环境变量 $R_HOME 和 $CUSTOM_COPT 按照http://www.joeconway.com/web/guest/pl/r/-/wiki/Main/Installation_Mac中的说明设置,将它们写入 .bash_profile,并添加 /library /frameworks/r.framework/resources/bin 通过写入同一个文件到我的路径。

XCode 4.6 和命令行工具已安装。标准 C 头文件有多个副本,包括 stdio.h,例如 /usr/include/stdio.h。

下一步似乎是:

DiMac:plr duncan$ make    
Makefile:40: ../../src/Makefile.global: No such file or directory
Makefile:41: /contrib/contrib-global.mk: No such file or directory
make: *** No rule to make target `/contrib/contrib-global.mk'.  Stop.

那没有用,然后我尝试:

DiMac:plr duncan$ make USE_PGXS=1
gcc -Os -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -D_FILE_OFFSET_BITS=64 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -arch x86_64  -I"." -I"-I/library/frameworks/r.framework/resources/include" -I/library/frameworks/r.framework/resources/include -I. -I. -I/usr/local/pgsql-9.1/include/server -I/usr/local/pgsql-9.1/include/internal -I/usr/include/libxml2 -DPKGLIBDIR=\"/usr/local/pgsql-9.1/lib\" -DDLSUFFIX=\".so\" -DR_HOME_DEFAULT=\"/library/frameworks/r.framework/resources\"  -c -o plr.o plr.c
In file included from /usr/local/pgsql-9.1/include/server/postgres.h:47,
                 from plr.h:38,
                 from plr.c:33:
/usr/local/pgsql-9.1/include/server/c.h:67:19: error: stdio.h: No such file or directory
/usr/local/pgsql-9.1/include/server/c.h:68:20: error: stdlib.h: No such file or directory
...

然后页面更多的错误。

在我看来,make在错误的位置寻找标准头文件并且找不到它们。从我的阅读来看,该标志似乎是在-isysroot告诉gcc通过预先添加正常搜索路径来查找头文件使用/developer.../macosx10.6.sdk路径,并且我的机器上不存在此路径,我认为这是当前 Xcode 版本的标准。

所以,问题:

这个标志是由 /plr 中的Makefile以某种方式设置的,还是在其他地方设置的?无论哪种方式,我如何更改它以使make找到它需要的头文件?如果改变它确实是正确的做法?

4

2 回答 2

0

我已经设法解决了我自己的问题。也许有人可以帮忙整理一下?

make USE_PGXS=1格式化一系列标志,然后使用计算出的标志调用gcc。因此,我复制并粘贴了gcc...上面的行,然后将路径更改-isysroot为找到标准头文件的路径。然后该命令正常运行,并编译它被告知的文件。

我不得不这样做几次,每次编译每个文件,直到完整的集合存在,然后重复练习 using make install

在多次运行之后,我最终在正确的位置找到了我需要的共享对象,然后按照 Joe Conway 的 wiki 中的说明继续。

现在效果很好。很高兴知道如何永久停止/更改-isysroot设置。

于 2013-03-19T18:35:25.693 回答
0

我使用 MacPorts 的 postgresql92 +python +perl 变体(在我自己之前编译 PostgreSQL 之后),它在我最近在三台计算机上完成的每个版本中都能完美运行:http: //iangow.wordpress.com/2013/06/26 /install-plr-on-os-x-10-8-4-using-macports/(这里早期过程的描述:http: //iangow.wordpress.com/2012/05/21/plr-on-os- x/ )。

于 2013-07-16T00:06:20.473 回答