使用 nar maven 插件创建 so 而不是 dylib

标签 c macos maven maven-nar-plugin pljava

我现在已经在 Mac 上构建了 pljava。 pljava 使用maven 和maven nar 插件进行构建。此 maven nar 构建当前正在创建 dylib 而不是 .so。看来 postgres 需要一个 .so 来代替。这是打开 postgres 跟踪的输出:

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

所以我的问题是 - 如何使 maven nar 输出 .so 文件而不是 .dylib?如果我使用类型“shared”,则会创建 dylib;如果我使用类型“plugin”,则会创建 .bundle;如果我使用类型“static”,则链接会失败。

最佳答案

我解决了我的问题。使用“插件”类型创建正确类型的文件。迈尔斯对这个问题的回答帮助我弄清楚了:

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

Mac OS 建议可加载模块使用 .bundle 扩展名,但移植的应用程序(如 PostgreSQL)仍然希望使用 .so。将文件名更改为 pljava.so 后,PostgreSQL 成功加载了该模块。

关于使用 nar maven 插件创建 so 而不是 dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063061/

相关文章:

c - 这些语句都会返回一个地址吗?

c - 如何将稀疏矩阵从 MATLAB 传递到共享库

Mac 操作系统不支持 Java 翻页?

Eclipse Neon + JBossTools + Maven 结果出现错误 : No compiler is provided in this environment

java - Intellij maven 项目编译 fatal error : invalid flag: --release

java - jboss-as-maven-plugin - 添加邮件 session 资源

c - 当 long-double 计算器失去精度时?

C/解析字符串,最简单的方法是什么

macos - 如何禁用 NSDocument 中的 NSUndoManager?

objective-c - 我应该在库中使用 Autoreleasepool