提问者:小点点

尝试用boost文件系统构建:“重定位…不能在制作共享对象时使用; 使用-fpic重新编译“


这是静态vs共享库的Linux/G++版本吗?

Ubuntu 18.04,boost 1.65,g++7.5.0,cmake 3.10.2,GNU make 4.1。 几乎所有Ubuntu18.04的默认版本,加上通过apt-get提供的“最新”增强版本。 (顺便说一句,更新的ubuntu是否有更新的版本,或者只是落后那么多?)

我正在尝试将使用多种不同增强组件(chrono,filesystem,proram_pressions,regex,system,thread,timer和unit_test_framework)的软件移植到NVidia Jetson TX2板上。。。 它在其开发板和主机上都使用了上述版本的ubuntu。

目前我试图清除的障碍是,链接cmake:add_library(shared.。。)中的第一个共享库在g++中失败,标题中出现错误。 “blah blah blah”部分提到了boost文件系统中的一个特定入口点。

我的结论是,我需要用请求的构建标志重建boost文件系统:-fpic。 令人震惊,我知道。 我似乎记得boost在构建系统方面是它自己独特的雪花,所以这会很有趣。 至少cmake是我认识的魔鬼。

libboost*-dev apt包是否附带了重建所需的所有内容,还是需要直接获取相关版本的源代码? 我试着用apt-file看看什么去哪儿了。。。 但是给出了多少个不同的。C?? 还有。?? 等扩展,我甚至不确定我是否在Boost::Filesystem的文件列表中搜索正确的内容。

在某些时候,我需要为开发板(arm)而不是主机(amd64)交叉编译这些东西,但一次一个麻烦。。。


共1个答案

匿名用户

你考虑过用柯南重建Boost吗? 好处:

  • 建造过程中的尖角已经用砂纸磨掉;
  • 您可以通过插入ARM交叉编译器的配置文件轻松地进行交叉编译;
  • 您可以确定所需的升压版本。
  • 它与CMake
  • 集成得非常好