云数据库 GAUSSDB-C语言函数(实验室特性):编译生成动态库
编译生成动态库
在使用用户定义的C代码之前,必须编译链接生成一个能被服务器动态载入的文件。确切的说,需要生成一个共享库文件。
首先源文件被编译成一个目标文件,然后目标文件被连接起来。目标文件需要被创建成position-independent code (PIC),这意味着当它们被载入时,可以被放置在内存中的任意位置。
下面例子中,我们以文件isNumber.c为例,并且创建一个共享库isNumber.so。
Linux创建PIC的编译器标志是-fpic。在不同平台上的,需要参考GCC手册。创建一个共享库的编译器标志是-shared。一个完整的例子:
gcc -fpic -c isNumber.cpp -I include/postgresql/server/ gcc -shared -o isNumber.so isNumber.o
上述命令也可以连在一起:
gcc -shared -fpic -o isNumber.so isNumber.cpp -I include/postgresql/server/
其中include/postgresql/server/ 为服务器对外发布的头文件路径,在安装目录下面。
gcc版本要求在7.3.0或者7.3.0之上。
为保证C函数兼容性,若涉及数据库升级,用户需要基于升级后的头文件重新编译C函数共享库。
在服务端加载过动态库后,不可在环境上手动修改该动态库,否则可能出现段错误或其他未知问题。
- 云数据库的特性有哪些_云数据库安全
- 实时语音识别_录音文件识别_语言生成
- 编译构建服务_多语言构建平台_高效云端开发
- GaussDB时序_时序引擎_高斯数据库时序-华为云
- GaussDB功能_云数据库GaussDB功能_GaussDB功能特性-华为云
- GaussDB性能_性能统计_高斯数据库性能-华为云
- 什么是函数工作流_函数托管计算服务_函数工作流 FunctionGraph-华为云
- 函数工作流可以做什么_函数工作流有什么优势_函数工作流 FunctionGraph-华为云
- GaussDB内核_GaussDB数据库内核_高斯数据库内核_华为云
- 华为数据库日期函数_GaussDB安装_高斯数据库日期函数