PostgreSQL扩展:创建基于C的扩展时出现“无法加载库”错误

hpcdzsge  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(258)

我在尝试创建基于C的PostgreSQL扩展时遇到了一个问题。我的GitHub repository中有可用的扩展代码,我正在尝试使用PostgreSQL中的CREATE EXTENSION命令加载它。但是,我遇到了以下错误:

ERROR: could not load library "/Users/spartacus/Desktop/GSoC/CODE/pg_cext": dlopen(/Users/spartacus/Desktop/GSoC/CODE/pg_cext, 0x000A): tried: '/Users/spartacus/Desktop/GSoC/CODE/pg_cext' (not a file), '/System/Volumes/Preboot/Cryptexes/OS/Users/spartacus/Desktop/GSoC/CODE/pg_cext' (no such file), '/Users/spartacus/Desktop/GSoC/CODE/pg_cext' (not a file)

字符串
我已经验证了扩展文件存在于给定的位置,并且还设置了必要的权限。尽管如此,扩展没有加载,错误仍然存在。
解决问题的步骤:
1.我已经检查了扩展文件的文件权限,它们似乎是正确的。

ls -l /Users/spartacus/Desktop/GSoC/CODE/pg_cext

total 80
-rw-r--r--@ 1 spartacus  staff    139 Jul 15 12:24 Makefile
-rw-r--r--@ 1 spartacus  staff    100 Jul 15 12:27 pg_cext--1.0.0.sql
-rw-r--r--@ 1 spartacus  staff    227 Jul 15 12:27 pg_cext.c
-rw-r--r--@ 1 spartacus  staff    157 Jul 15 11:56 pg_cext.control
-rw-r--r--  1 spartacus  staff    984 Jul 17 09:14 pg_cext.o
-rwxr-xr-x  1 spartacus  staff  16951 Jul 17 09:14 pg_cext.so


1.我已经尝试重新加载PostgreSQL,但错误仍然发生。
1.我已经确认扩展文件存在于指定的位置,但错误消息表明并非如此。
我的环境:

  • PostgreSQL版本:postgres(PostgreSQL)15.0
  • 操作系统:MacOS [M1芯片]
  • Extension Code

有人能帮我解决这个问题吗?提前感谢您的帮助!

dz6r00yl

dz6r00yl1#

试着从这个Manual开始,它将帮助你制作第一个扩展,你也可以纠正你的错误。

irtuqstp

irtuqstp2#

请执行以下操作:1.检查文件权限:

pg_cext.so: ls -l /Users/spartacus/Desktop/GSoC/CODE/pg_cext

字符串
1.验证文件路径是否正确,然后设置DYLD_LIBRARY_PATH:

export DYLD_LIBRARY_PATH=/Users/spartacus/Desktop/GSoC/CODE


1.在CREATE EXTENSION命令中使用绝对路径。
1.使用以下命令重新启动PostgreSQL

sudo systemctl restart postgresql


1.检查PostgreSQL日志以获取更多详细信息&确保扩展是针对PostgreSQL 15.0和M1架构编译的。
我希望它能起作用。

Apache-Age #postgresql

tktrz96b

tktrz96b3#

我在开发C扩展(PostgreSQL)时也遇到了一些错误。
任何扩展名都有3个主文件。
1.c文件
1..控制文件
1..sql文件
在开发扩展时,请确保您的系统正在运行相互兼容的正确版本。
我希望这能回答我们的问题。
参考=> Manual

相关问题