问题标签 [fpic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6645 浏览

c++ - Linux 上的共享库和 -fPIC 错误

我正在尝试使用使用 Cmake 创建的 Makefile 在 Linux 中编译共享库,但运行 make 我得到以下错误:

我在 CMakeLists.txt 中提供了以下命令,以表明我想要一个共享 (.so) 库:

add_library(cpp-lib SHARED ${CPP_FILES})

为了避免上面显示的 -fPIC 错误,我还需要指定什么?

非常感谢提前

0 投票
0 回答
1701 浏览

c++ - fPIC 编译错误:没有这样的文件或目录

我正在运行 64 位的基本操作系统,并且在 github 上有以下项目的源代码:

https://github.com/pellegre/libcrafter

但是,在尝试通过./configure命令配置时出现以下错误:

在此处输入图像描述

之后我检查config.log文件:

在此处输入图像描述

有谁知道为什么会这样?我以前用 fPIC 编译过,没有麻烦。

文件夹中配置文件的示例:

在此处输入图像描述

在评论中更新彼得:

在此处输入图像描述

0 投票
1 回答
1048 浏览

c++ - 使用 -fPIC 标志重新编译

我有一个想要构建的项目(不是我的)。它具有必须绑定的 c++ 和 Python 模块。当我启动 cmake 时,我收到此错误:

我用apt-get安装了antlr库,据我所知,我应该重新编译这个库,但我不知道我应该把-fPIC放在antlr库源代码的哪个部分,还是有其他方法?

0 投票
1 回答
290 浏览

linker - libturbojpeg 编译 love-0.9.2 的问题

刚从 Löve 开始,我很喜欢它!我目前正在 Ubuntu 14.04 下对其进行测试。

我能够毫无问题地编译 love 0.8.0,但我在从 bitbucket 编译 0.9.2 时遇到问题。看来,我可能是被一个大灰狼吃掉了……

链接时出现此错误,原因是libturbojpeg

根据这个 StackOverflow 条目,似乎默认的 libturbojpeg 二进制文件通过 apt-get 安装在 Ubuntu 中:

不是用 编译的-fPIC,所以我想我必须得到它的源代码,用那个选项重新编译它,并在löve的构建过程中修改一些东西以指向编译的那个。

我是朝着正确的方向前进,还是我错过了什么?

问候,汤姆

PD:我想知道为什么在这种特定情况下需要使用 -fPIC 编译这个库......

0 投票
1 回答
120 浏览

linux - g++ -shared -fPIC helloworld.cpp -o ./hw,核心转储

我是 linux 的新人,我按照以下命令构建了一个 hello world:

./hw原因

为什么?

运作良好。

0 投票
1 回答
431 浏览

c++ - c/c++ 将位置相关对象转换为位置无关

我有一些带有调试符号的编译目标文件,但无法访问源代码。

有什么方法可以将此文件转换为与位置无关的吗?

据我了解'-fPIC'标志它使所有跳跃都是相对的。我想知道是否有调试符号足以修复这种跳转并创建一个 PIC 二进制文件。

如果不是,请告诉我为什么无法完成此操作。

0 投票
1 回答
91 浏览

c - PIC共享库中不同的函数地址

我有一个文件 ptr.c 作为

我创建了一个共享库

然后我从两个程序 p1.c 和 p2.c 调用 test,调用 test 和 p1.c 在调用 test 后都休眠以确保两个可执行文件一起处于活动状态。

由于文本部分是共享的,我希望测试函数的地址是相同的。

但事实并非如此,为什么?

编辑:我猜打印的地址是虚拟地址。如果这是真的,那么它会映射到实际地址,这对于 p1 和 p2 都是相同的。

0 投票
1 回答
2848 浏览

linux - caffe 重新编译 libgflags.a 并出现 -fPIC 错误

当我尝试在 Linux Ubuntu 64 上安装 Caffe 时出现错误。错误如下:

/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): 重定位 R_X86_64_32S 反对 `.rodata' 在制作共享对象时不能使用;使用 -fPIC
/usr/local/lib/libgflags.a 重新编译:添加符号时出错:值错误

我尝试用 重新编译 gflags 库-fPIC,但错误变为如下:

src/caffe/common.cpp: 在函数'void caffe::GlobalInit(int*, char***)':
src/caffe/common.cpp:35:5: 错误: '::gflags' 没有被声明
::gflags::ParseCommandLineFlags(pargc, pargv, true);

我还尝试将 caffe 的 CMakeCache.txt 更改为设置-fPIC,但也不起作用。

0 投票
2 回答
8735 浏览

c++ - 为什么不总是使用 fpic(位置无关代码)?

我在 PIC 上阅读了这篇文章,似乎使用 PIC 总是好的(只要它是 exe / static / share llibrary)。

那么有什么缺点呢?
是否有详细说明何时不使用 PIC 的示例?

0 投票
1 回答
46 浏览

ubuntu - 在 Ubuntu 12.04 LTS 中构建暗表 1.6.7 的错误

我正在尝试从 Ubuntu 12.04 LTS 上的源代码构建图像程序 darktable 1.6.7。我正在按照这里的说明进行操作。大约 85% 的错误,我不知道如何解释:

我不知道在哪里通过-fPIC,因为它是建议的。我也读过--enable-shared应该传递给./configure,但在这种情况下没有./configure文件,我不知道这里的可比较步骤是什么。任何帮助理解和解决此错误将不胜感激!