【发布时间】:2016-04-25 07:06:59
【问题描述】:
我正在尝试从 C 代码连接到 PostgreSQL,我必须从源代码构建 libpq,因为我在 AIX 上。我按照此评论中的步骤操作 Where do i get libpq source? 但结果我得到了一个 32 位版本的 libpq.a,如何构建 64 位版本?
【问题讨论】:
标签: postgresql aix libpq xlc
我正在尝试从 C 代码连接到 PostgreSQL,我必须从源代码构建 libpq,因为我在 AIX 上。我按照此评论中的步骤操作 Where do i get libpq source? 但结果我得到了一个 32 位版本的 libpq.a,如何构建 64 位版本?
【问题讨论】:
标签: postgresql aix libpq xlc
在 AIX 上编译比在其他平台上更难... 始终创建一个您逐渐改进的脚本,直到您获得工作版本。可能的开始:
#!/bin/sh
#assuming gcc
GCCLIB=$(dirname $(gcc -maix64 -pthread -print-file-name=libgcc_s.a))
export CFLAGS='-maix64 -mtune=native -pthread'
export CPPFLAGS='-D_GNU_SOURCE -D_XOPEN_SOURCE=500 -D_ALL_SOURCE'
export LDFLAGS="-maix64 -Wl,-brtl -Wl,-blibpath:/usr/local/lib64:${GCCLIB}:/usr/lib -L/usr/local/lib64 -pthread"
export OBJECT_MODE=64
./configure --prefix=/usr/local \
--libdir=/usr/local/lib64 \
--enable-shared \
--enable-static \
2>&1 | tee log.configure
make all 2>&1 | tee log.make.all
make install 2>&1 | tee log.make.install
【讨论】:
-q64 而不是-maix64;你也必须删除“GCCLIB”-parts
-pthread 更改为-lpthreads 并显式设置CC 变量:export CC=xlC_r
export CC=xlc_r; export CXX=xlC_r(字母c/C的大小写表示C或C++)
-q64 编译器选项启用 64 位(编译器文档中有相关信息)
xlC 64 位的快速谷歌搜索给出了这个链接,你可能会觉得有帮助。
http://northstar-www.dartmouth.edu/doc/ibmcxx/en_US/doc/complink/tasks/tubld64a.htm
【讨论】: