Osx mountain lion 如何在Mountain Lion上安装PL/R?寻找错误的路径?

Osx mountain lion 如何在Mountain Lion上安装PL/R?寻找错误的路径?,osx-mountain-lion,xcode4.6,command-line-tool,plr,Osx Mountain Lion,Xcode4.6,Command Line Tool,Plr,我正在尝试在Mountain Lion 10.8.2上安装PL/R,我从R-project安装了R2.15.3,从Kyngcaso安装了PostgreSQL 9.1。我从中得到了PL/R 8.3.0.14。我已将展开的文件夹放在/usr/local/pgsql/share/contrib中,并将cd'd放入该文件夹中 环境变量$R_HOME和$CUSTOM_COPT通过将它们写入.bash_profile来设置,还通过写入同一文件将/library/frameworks/R.framework/

我正在尝试在Mountain Lion 10.8.2上安装PL/R,我从R-project安装了R2.15.3,从Kyngcaso安装了PostgreSQL 9.1。我从中得到了PL/R 8.3.0.14。我已将展开的文件夹放在/usr/local/pgsql/share/contrib中,并将cd'd放入该文件夹中

环境变量$R_HOME和$CUSTOM_COPT通过将它们写入.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来查找它所需的头文件?如果改变它确实是正确的做法?

我已经设法找到了解决我自己问题的办法。也许有人能帮忙收拾一下

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

我必须这样做几次,每次编译一个文件,直到有一个完整的集合存在,然后使用
makeinstall
重复这个练习

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


现在效果很好。知道如何永久停止/更改-isysroot设置将非常棒。

我使用MacPorts的postgresql92+python+perl变体(在我自己之前编译PostgreSQL之后),它在我最近在三台计算机上完成的每一次构建中都能完美地工作:(这里是对早期过程的描述:)。

谢谢。我会在某个时候尝试,但目前我有Kyngchaos PostgreSQL,因为使用他的PostGIS、PGRouting和相关库更容易。