首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否应该始终使用与应用程序相同的编译器选项来构建静态库?

是否应该始终使用与应用程序相同的编译器选项来构建静态库?
EN

Stack Overflow用户
提问于 2012-03-01 18:03:22
回答 3查看 352关注 0票数 2

我们有一个可重用的库,可以交付给多个产品。大部分产品都是用VxWorks编写的,使用的都是gcc编译器。但是,它们中的每一个都将在不同的体系结构上,如PPC,MIPS,而在PPC本身有更多的类型,如8531,8620等。

目前,我正在分别为每个主板构建静态库,并提供。有没有什么办法可以构建一个通用库,可以跨所有这些不同的体系结构使用?

此外,目前我试图确保编译器选项与产品的编译器选项相同。有必要吗?互联网上有没有一些信息可以分类哪些选项对静态库和应用程序的维护很重要?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-01 18:20:30

  1. No没有其他方法-您必须为每个平台构建库(静态或非静态)。您可能已经知道,静态库实际上只是一个存储大量目标文件的容器。每个目标文件都包含特定于构建该库的平台的二进制代码(请阅读:不同的汇编instructions).
  2. Yes,集合,当您构建一个库时,保持编译器选项不变,并且使用它的二进制(程序)是一个非常好的实践。这样你就避免了潜在的非常糟糕的问题。一些优化选项是二进制不兼容的(例如:您可以使用优化来编译库中的函数,这将导致它通过寄存器返回(或期望)数据),但您的主程序可能会期望函数按堆栈上的地址返回它-这是个大问题。
票数 3
EN

Stack Overflow用户

发布于 2012-03-01 18:15:51

这取决于每个选项:显然,平台和架构选项必须相同。另一类如优化、调试、概要分析可以有所不同。

想象一下,一个库可能是由外部开发人员提供的,因此,您实际上并不知道他是如何编译它的,只知道平台和架构需求。

票数 2
EN

Stack Overflow用户

发布于 2012-03-01 23:03:10

另外,目前我正在尝试确保编译器选项与产品的编译器选项相同。有必要吗?

'2. -no。事实上,大多数库都可以被认为是独立的,并不绑定到任何特定的产品(即,它们可以在许多产品中使用)。因此,每个产品的特定标志不属于该库,反之亦然(编译产品的对象时,库实现特定的标志不应该出现)。

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

https://stackoverflow.com/questions/9514150

复制
相关文章

相似问题

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