odb踩坑记录

序言

ODB算是很常用的数据库ORM库了。其对象化技术相当实用和简洁,但坑也不少,还缺乏中文参考资料,惨惨惨。这篇文章用以记录ODB使用过程中遇到的经验教训。

1. 基础坑

1.1 库的依赖顺序

编译时,如果存在一条依赖链,而链里还有其他的依赖链时,比如'liba'依赖'libb'和'libc',而'libb'又依赖于'libc'。其引入的顺序必须是需要依赖他库的在前,被依赖的在后,也就是-la -lb -lc。不然就会出现# [Undefined reference](https://www.codesynthesis.com/pipermail/odb-users/2015-February/002407.html)错误。

1.2 静态库下的unknown database schema ''运行错误

这是schema_catalog::create_schema()引发的错误。原因是静态库在链接时,未使用的代码文件是不会链接的。方法是:

  • GCC: 使用-Wl,-whole-archive-Wl,-no-whole-archive包裹目标静态库,这样就能使其全部文件均被链接。
  • 通用: odb编译hxx文件时,使用--schema-format separate来额外产生一个独立的schema代码文件。与其他部分分离后就可以直接包含他们而无需去调用静态库

(未完待续)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 几乎在所有的linux发行版上,都存在着一定程度的不兼容问题,如何让自己的程序能尽量多的在发行版上运行?ldd大多...
    SeTriones阅读 8,027评论 0 1
  • 1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被...
    鹰击司马阅读 4,786评论 0 2
  • 动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过...
    小5筒阅读 10,920评论 0 3
  • 1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含...
    逍遥_9353阅读 5,455评论 0 2
  • 我穿过人山人海,也跨过山和大海,自己给自己挖的坑却跳不出来,没画完的佩奇……未完待续~
    小solo阅读 1,162评论 0 0

友情链接更多精彩内容