首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从相同的代码库编译2个库

从相同的代码库编译2个库
EN

Stack Overflow用户
提问于 2017-06-28 00:57:33
回答 1查看 35关注 0票数 0

对于嵌入式应用程序,我需要在NV RAM中存储从相同代码库编译的两个库-只是具有不同的编译标志。在运行(或加载)时,我计划使用单个入口点来选择(加载/执行)相关的库。

由于只有一个入口点,为了避免复杂性,我希望保持静态链接。但是,为了做到这一点,我需要区分每个库的符号。

我用的是GCC的工具链。

如何“干预”编译/链接过程,以便为链接器使用的每个库的符号添加不同的前缀?

或者,你可以提出另一种方法来实现我需要的东西吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-29 02:36:02

有一个很好的方法可以做到这一点。当然,在运行时的主代码中,您希望避免任何决定使用哪个库,所以在运行时做出任何决定都是一个非常糟糕的设计选择。在引用不同的静态库时使用各种垃圾函数指针和#ifdef使得代码不可维护、不可读和不可伸缩。

因此,正确的方法之一是使用库的动态绑定+独立接口(抽象层)作为静态库。只要你的接口被初始化,它就会决定加载哪个dll。因此,您可以将要使用的库背后的逻辑放到相应抽象层的正确位置。

代码语言:javascript
复制
//           main code
//               |
//          lib_proxy.lib (static)
//           /       \ 
//      lib1.dll   lib2.dll (dynamic)

注(观点):当然,另一种方法是使用不同的构建脚本,但它被多次证明,至少对我来说,这是对整个项目进行集群的最好方法之一。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44785908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档