当前位置: 首页 > 知识库问答 >
问题:

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

东郭鹤龄
2023-03-14

这是静态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个答案

邴子实
2023-03-14

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

  • 建造过程中的尖角已经用砂纸磨掉;
  • 您可以通过插入ARM交叉编译器的配置文件轻松地进行交叉编译;
  • 您可以确定所需的升压版本。
  • 它与CMake
  • 集成得非常好
 类似资料:
  • 我试图安装一个库,但运行make后出现以下错误。如何用标志重新编译? 使目标pwrutils的扫描依赖项链接CXX共享库libpwrutils.so/usr/bin/ld://usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../../x86_64-linux-gnu/libboost_system.a(error_code.o):在创建共享对象时不能使用针对`

  • 我正在制作一个需要libgmp的共享库。我的目标是将静态libgmp嵌入到共享库中。 我尝试过。/configure with cflags=“-fpic”。此外,我还尝试修改了libgmp源代码的subdir中的所有Makefile,以便用-fpic编译所有代码。(脏活累活) 但是,当我将libgmp.a链接到共享库时,仍然收到错误消息。 /usr/bin/ld://usr/local/lib/

  • 问题内容: 我正在尝试从VPS中的makefile编译此源代码,但无法正常工作。VPS是64美分的操作系统 这是完整的错误 这是我的makefile: 有人知道怎么了吗? 问题答案: 执行编译器告诉您的操作,即使用进行重新编译。要了解此标志的作用以及在这种情况下为什么需要此标志,请参阅GCC手册的 代码生成选项 。 简而言之,术语“ 位置无关代码” (PIC)指的是与内存地址无关的生成的机器代码,

  • 我正在尝试使用文件提供商共享存储在我的应用程序内部存储器的原始文件夹中的MP3文件,并允许用户使用他们选择的音频收听应用程序打开共享的MP3文件。 然而,在我编写的代码中,当我尝试使用附加的内容URI作为数据执行意图时,会出现FileNotFoundException。这会导致FileProvider系统的所有其他方面出现故障。 我创建了一个MediaPlayer,让它毫无问题地打开了我想要共享的

  • 有几种方法可以与node.js共享PHP会话。 上述两种方法都需要: 1)运行另一台服务器。 2)更改默认的PHP会话处理程序。 为什么我不应该使用默认的PHP会话处理程序,并通过使用'fs'(文件系统)核心库读取node.js中的文件内容来访问会话文件? 假设服务器之间不应该进行远程操作,那么除了速度之外,还有什么其他原因不直接访问和读取会话文件呢?

  • 我正在做一个程序的一部分(关于语音识别和遥控车),其中代码重复多次。出于好奇,我想将其转换为类似于(原谅;我不知道表达式的类型),然后以类似以下方式调用它:、和或类似于、和。 在Java中使用简单的lambda函数的正确语法是什么?(我应该把它的类型写下来,而不是说?) 如果您好奇的话,下面是代码块:

  • 问题内容: 我正在尝试使用卷共享在Docker guest虚拟机中共享文件。为了获得相同的UID,从而与这些文件具有互操作性,我想在Docker guest虚拟机中创建一个与自己的用户具有相同UID的用户。 为了验证这个想法,我编写了以下简单的Dockerfile: 使用进行测试,然后显示该文件被简单命名为。 在来宾构建过程中是否可以与Docker共享主机环境变量? 问题答案: 该环境不是共享的,