首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cmake:如何使用静态链接的boost (或embed boost)创建库

cmake:如何使用静态链接的boost (或embed boost)创建库
EN

Stack Overflow用户
提问于 2016-05-20 21:16:21
回答 1查看 418关注 0票数 0

我想构建在内部使用boost (特别是boost::asio)的库(比如"mylib",静态的或共享的,都无关紧要)。库公共接口不依赖于任何boost类型。

库应该由Qt应用程序使用,我不想在应用程序的构建脚本中引入任何boost依赖项(它目前使用qmake ),我需要"mylib“作为唯一的依赖项。库构建系统为CMake。我试图用静态链接的boost构建共享库,但我得到了如下错误:

代码语言:javascript
运行
复制
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libboost_system.a(error_code.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/lib/x86_64-linux-gnu/libboost_system.a: error adding symbols: Bad value

主要的目标/工具链是x64 (Linux),但最好是有跨平台的解决方案(至少是mingw64和MacOS X)。

创建静态库也是一种选择,但我不知道如何将静态boost库包含到"mylib“中

EN

回答 1

Stack Overflow用户

发布于 2016-05-23 23:56:22

您不能在动态库中使用为静态库构建的代码。共享库需要与位置无关的代码。您可以获取用于构建Boost共享库的对象文件,并将它们全部填充到一个.a文件中并使用它。或者取消Boost构建,将-fPIC添加到用于编译其静态库的标志中。

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

https://stackoverflow.com/questions/37347718

复制
相关文章

相似问题

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