Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103604900
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-13 13:45:48

    来源:互联网    作者:Doug Doole

针对 Windows(32 位)预构建的二进制代码

要在 Windows 上安装预构建的二进制代码:

从 “下载” 中下载文件 sortkey-windows-32.zip 并将它解压到一个临时目录中。

将以下文件:

sortkey.dll

icuin34.dll

icuuc34.dll

icudt34.dll

复制到 sqllib/function 中。

使用一个 DB2 命令窗口连接到数据库,并运行 DDL 脚本来对这个函数进行编目:

db2 connect to sample

db2 -tvf createfn.db2

编译 ICU 和 UDF

要编译 ICU 和 UDF:

下载并安装 ICU 库。参见 “参考资料” 中 ICU 站点的链接,在这里可以下载二进制代码或源代码,以及学习如何编译和安装这个库。如果需要的话,将包含 ICU 可执行文件的目录添加到 PATH 环境变量中。在 Windows 中,还需要更新 LIB 和 INCLUDE 环境变量。LIB 变量应该引用 icu\lib 目录,INCLUDE 应该引用 icu\include 目录。

从 “下载” 中下载文件 sortkey-source.zip 并将它解压到一个临时目录中将文件 sqllib/samples/c/bldrtn(在 Windows 上是 sqllib\samples\c\bldrtn.bat)复制到临时目录并编辑复制的文件。对于编译和链接步骤,需要添加关于 ICU 的信息。

在 Linux 或 UNIX 上,定义变量 ICU_C_FLAGS 和 ICU_L_FLAGS,并将它们添加到编译和链接命令中。这些变量应该在命令前面定义,并在编译器或链接器可执行文件名后面直接使用。清单 1 显示 Linux bldrtn 文件中的相关部分。修改之处以粗体显示。

清单 1. 修改的 Linux bldrtn 文件

# If an embedded SQL program, precompile and bind it.
    if [ -f $1".sqc" ]
    then
    ./embprep $1 $2
    fi

    # ICU options
    ICU_C_FLAGS="`icu-config --cppflags --cxxflags`"
    ICU_L_FLAGS="`icu-config --ldflags`"

    # Compile the program.
    $CC $ICU_C_FLAGS $EXTRA_C_FLAGS-I$DB2PATH/include -c $1.c -D_REENTRANT

    # Link the program and create a shared library
    $CC $ICU_L_FLAGS $LINK_FLAGS -o $1 $1.o $EXTRA_LFLAG -L$DB2PATH/$LIB -ldb2
    -lpthread

在 Windows 上,必须将 ICU 库添加到链接命令中。清单 2 显示 Windows bldrtn.bat 文件中的相关部分。修改之处以粗体显示。

清单 2. 修改的 Windows bldrtn.bat 文件

:link_step
    rem Link the program.
    link -debug -out:%1.dll -dll %1.obj db2api.lib icudt.lib icuuc.lib
    icuin.lib -def:%1.def

运行 bldrtn 脚本来编译这个 UDF: bldrtn sortkey

将 sortkey(在 Windows 上是 sortkey.dll)文件复制到 sqllib/function 中。连接到数据库,并运行 DDL 脚本来对这个函数进行编目:

db2 connect to sample

db2 -tvf createfn.db2

注意,如果以这种方式编译这个 UDF,那么在运行它的任何机器上必须完整地安装 ICU。

阅读(281) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~