cms网站建设系统,天津的公司能在北京做网站备案吗,直接打开百度,在线平面设计工具前文写了调用libchdb.so动态连接库中的未公开导出函数的方法#xff0c;不久前chdb发布了3.6版#xff0c;其中提供了静态链接库。 尝试编译一个不依赖庞大动态连接库libchdb.so的程序#xff0c;获得了成功#xff0c;以下是操作步骤。 1.下载chdb静态连接库
wget https:…前文写了调用libchdb.so动态连接库中的未公开导出函数的方法不久前chdb发布了3.6版其中提供了静态链接库。 尝试编译一个不依赖庞大动态连接库libchdb.so的程序获得了成功以下是操作步骤。 1.下载chdb静态连接库
wget https://github.com/chdb-io/chdb/releases/download/v3.6.0/linux-aarch64-libchdb-static.tar.gz -c2.解压缩
tar xf linux-aarch64-libchdb-static.tar.gz
ll-rw-r--r-- 1 kylin kylin 14491 9月 8 16:20 chdb.h
-rw-r--r-- 1 kylin kylin 16708 9月 8 16:20 chdb.hpp
-rw-r--r-- 1 kylin kylin 1221436992 9月 8 16:05 libchdb.a可见它包含两个头文件和一个1.2GB的静态连接库libchdb.a。而3.5版动态连接库比这小多了只有一个头文件chdb.h文件。
-rw-r--r-- 1 kylin kylin 10287 7月 9 16:11 chdb.h
-rwxr-xr-x 1 kylin kylin 567703784 7月 9 16:06 libchdb.so3.用前文中同一个源程序编译目标文件
g -c bna.cpp它不会检查调用的外部文件 4.将上一步的目标文件和libchdb.a链接
g bna.o chdba/libchdb.a -o bna报错如下条目很多列举3条不同的
chdba/libchdb.a(krb5__threads.c.o)在函数‘krb5int_thread_support_init__aux’中
(.text.krb5int_thread_support_init__aux0x114)对‘pthread_once’未定义的引用
chdba/libchdb.a(krb5__plugins.c.o)在函数‘krb5int_open_plugin’中
(.text.krb5int_open_plugin0x3c)对‘dlopen’未定义的引用
chdba/libchdb.a(libclickhouse_common_io__QueryProfiler.cpp.o)在函数‘DB::Timer::set(unsigned long)’中
(.text0x16c)对‘timer_settime’未定义的引用查阅资料得知它们分别依赖动态库pthread、dl和rt把它们都加到命令行连接成功。
g bna.o chdba/libchdb.a -o bna -lpthread -ldl -lrt
ls -l bna
-rwxrwxr-x 1 kylin kylin 187010224 9月 12 13:20 bna
./bna
Addition result: 111111111011111111100
Multiplication result: 1219326311370217952237463801111263526900链接后的文件有187MB比静态库和动态库都小得多当然对于这么点大数运算功能而言还是太大了本文仅作为技术上可实现的讨论。