【问题标题】:Create so instead of dylib using nar maven plugin使用 nar maven 插件创建 so 而不是 dylib
【发布时间】:2023-03-13 00:14:02
【问题描述】:

我现在在 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”类型,则链接会失败。

【问题讨论】:

    标签: c macos maven maven-nar-plugin pljava


    【解决方案1】:

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

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

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

    【讨论】:

    • 你没有写下你必须采取的大部分/每一个步骤,以便在某个地方的 mac 上编译 pljava,是吗?如果你这样做了,我很想得到一个链接。
    • 我确实写了为 Mac OS X Maverick for Postgres 9.1 构建和安装 pljava 的步骤。目前这些说明只发布在我雇主的内部网络上,因为我不相信有任何外部利益(pljava 项目本身看起来几乎“死”了)。我可以发布给定相关位置的步骤(例如,关于堆栈溢出的“如何为 Mac 构建和安装 pljava”问题)。
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多