2014-09-26 16 views
0

我現在在Mac上建立了pljava。 pljava使用maven和maven nar插件進行構建。這個maven nar build目前正在創建一個dylib而不是.so。看起來postgres想要一個.so來代替。這是從打開的Postgres跟蹤輸出上:使用nar maven插件創建代替dylib

2014-09-26 10:12:59 EDT STATEMENT: CREATE FUNCTION sqlj.java_call_handler() RETURNS language_handler AS 'pljava' LANGUAGE C 
2014-09-26 10:12:59 EDT DEBUG: bind <unnamed> to <unnamed> 
2014-09-26 10:12:59 EDT LOG: execute <unnamed>: CREATE FUNCTION sqlj.java_call_handler() RETURNS language_handler AS 'pljava' LANGUAGE C 
2014-09-26 10:12:59 EDT DEBUG: ProcessUtility 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/lib/postgresql/pljava" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/lib/pljava" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/share/pljava/pljava" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/pljava" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/server/pljava" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/lib/postgresql/pljava.so" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/lib/pljava.so" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/PostgreSQL/9.1/share/pljava/pljava.so" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/pljava.so" 
2014-09-26 10:12:59 EDT DEBUG: find_in_dynamic_libpath: trying "/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/server/pljava.so" 
2014-09-26 10:12:59 EDT ERROR: could not access file "pljava": No such file or directory 

所以我的問題是 - 如何才能讓行家NAR輸出一個.so文件,而不是一個名爲.dylib?如果我使用類型「共享」創建一個dylib,如果我使用類型「插件」一個.bundle創建,如果我使用類型「靜態」鏈接失敗。

回答

1

我解決了我的問題。使用類型「插件」創建正確類型的文件。萬里回答這個問題,讓我看着辦吧:

What are the differences between .so and .dylib on osx?

的Mac OS建議可加載模塊,但移植的應用程序(如PostgreSQL).bundle擴展仍想使用的.so。將文件名更改爲pljava.so之後,PostgreSQL已成功加載模塊。

+0

你沒有寫下你爲了在某個mac上編譯pljava而必須採取的大部分/每一步,是嗎?如果你做到了,我很想得到一個鏈接。 – Darsstar 2014-10-04 20:41:04

+0

我的確撰寫了爲Mac OS X Maverick for Postgres 9.1構建和安裝pljava的步驟。目前這些說明只發布在我的僱主的內部網絡上,因爲我不相信有任何外部興趣(pljava項目本身看起來幾乎「死了」)。我可以發佈給定相關位置的步驟(例如,「如何構建和安裝適用於Mac的pljava」堆棧溢出問題)。 – Gareth 2014-10-05 07:21:28