IBM i系统编译PostgreSQL ODBC Driver 12.02版本时libpq检测失败编译错误求助
看起来你遇到的核心问题是configure脚本在链接阶段找不到libpq库——虽然你确认库文件存在,但链接器(ld)就是无法识别它。结合你提供的config.log信息,我整理了几个针对性的解决方向:
修正
--with-libpq参数的路径
你当前用的--with-libpq=/QOpenSys/pkgs/lib/postgresql12/lib指向的是lib子目录,但--with-libpq参数通常需要指向PostgreSQL的安装根目录,而非lib子目录。configure会自动从根目录下识别include和lib子文件夹。把参数改成:./configure --with-libpq=/QOpenSys/pkgs/lib/postgresql12 --with-iodbc=/usr/local/iODBC这样能避免config.log里出现的
/QOpenSys/pkgs/lib/postgresql12/lib//lib这种重复路径问题,让configure正确定位头文件和库文件。设置IBM i专属的库路径环境变量
在IBM i系统中,链接器依赖LIBPATH环境变量查找共享库,而非常见的LD_LIBRARY_PATH。运行configure前先执行:export LIBPATH=/QOpenSys/pkgs/lib/postgresql12/lib:$LIBPATH确保链接器能找到libpq.so文件。
确认libpq的实际存放路径
有时候yum安装的PostgreSQL库可能放在lib64目录下,你可以用find命令确认准确路径:find /QOpenSys/pkgs -name libpq.so如果结果是
/QOpenSys/pkgs/lib/postgresql12/lib64/libpq.so,需要调整configure参数或LIBPATH指向这个lib64目录。手动指定编译和链接参数
如果configure仍无法自动识别路径,可以直接设置CFLAGS和LDFLAGS强制指定头文件和库路径:export CFLAGS="-I/QOpenSys/pkgs/lib/postgresql12/include" export LDFLAGS="-L/QOpenSys/pkgs/lib/postgresql12/lib" ./configure --with-iodbc=/usr/local/iODBC尝试安装预编译包
你可以先检查IBM i的yum仓库是否有现成的PostgreSQL ODBC驱动包,省去编译的麻烦:yum search postgresql-odbc如果搜索到对应12版本的包(比如
postgresql12-odbc),直接用yum install postgresql12-odbc安装即可。
备注:内容来源于stack exchange,提问作者TheLittlePeace

