Apache Netbeans IDE 20:链接器找不到 .a .so liboauth 库(Linux Mint 21.3)[已解决:FLATPAK!]

问题描述 投票:0回答:1

新 Mint linux、新 Netbeans v.20、旧 v.1.0 NetBeans 8.2 C/C++ 最新插件、liboauth-dev 最新 1.0.3-5 与 Synaptic 一起安装到 /usr/lib/x86_64-linux-gnu。 64位系统。

当以交互方式要求 NetBeans C++ 应用程序项目浏览要链接和包含的库时,Netbeans 无法找到 .a 和 .so 文件。在各种设置下。

所以我使用

-Wl,--verbose
(嗯,没有空格)让链接器转储其想法。

当使用正确的 -L 路径手动指定 -loauth 库时,Netbeans 的 g++ 链接器会直接查看其路径中的文件,但无法打开。

attempt to open /usr/lib/x86_64-linux-gnu/liboauth.so failed
attempt to open /usr/lib/x86_64-linux-gnu/liboauth.a failed

但是相同的复制 g++ 行在终端上可以成功运行。所以这是 Netbeans 环境,而不是 g++。

这不是权限问题,因为我暂时将库文件开放到777只是为了笑。无论如何,您只需要 444 或 644 即可用于库。

这不是 64 位与 32 位的问题——库是 64 位的——确认使用

file *oauth*
,在 /usr/lib/x86_64-linux-gnu 目录中,显示 .so 文件“符号链接”或“ELF 64 位”,并且

objdump -f liboauth.a | grep ^architecture

其中显示 .a 库的 i386:x86-64。

我什至为了好运而跑步

sudo ldconfig /usr/lib/x86_64-linux-gnu
。不。

因此,目前任何使用 Apache Netbeans 进行 C++ 的库都已陷入困境,直到有人给我解决这个问题的魔法。

我确实希望 Apache 能够完全支持 C++ 语言,而不是需要旧的 8.2 插件门户版本。

有谁知道在哪里下载/安装netbeans v.8? netbeans.org 重定向到 netbeans.apache.org (2024),该组织声称低于 v.9 的源代码不再可用。默认 Synaptic 甚至没有列出 Apache。 iirc v.8 安装程序通过互联网访问 netbeans.org 下载重要文件...

为什么实际上存在的库文件没有出现在 Apache Netbeans 中,以及如何让它成功链接它们?

c++ apache netbeans hyperlink flatpak
1个回答
0
投票

事实证明,NetBeans 是使用 FlatPak 软件包系统安装的。

FlatPak,为了“安全”,实际上并不在您的实际文件系统中运行。相反,它创建了一个沙箱并行幽灵环境系统,它看起来很像您的系统,并且具有相同的通用名称。但事实并非如此。它没有添加很多库,并且提供了一些额外的库,并且不在您的系统文件目录中。这是一个线索。

由于这本质上会复制您的系统,因此浪费的文件空间一定是巨大的。

显然有足够多的人抱怨该系统,因此他们决定对其进行越狱,至少对于 NetBeans 来说是这样。它安静地安装在 IDE 的

/run/host/
下。因此,在 Netbeans 中,您实际上不会在
/usr/lib/x86_64-linux-gnu/libfoo.so
下找到文件,而是在

下找到它
/run/host/usr/lib/x86_64-linux-gnu/libfoo.so

有人可能认为进入项目名称->属性:项目属性->链接器->->添加库...这将设置适当的魔法来查找您的库。但它显然只创建了

-lfoo
链接器标签。

您仍然需要返回到项目属性面板->其他库目录并将

/run/host/usr/lib/x86_64-linux-gnu
添加到库搜索路径。这将为您创建 -L 标志参数。赢了。

还是待定:如果库需要越狱,如何才能在不越狱的情况下看到项目中的源文件?也许它仅限于您拥有的文件,或者仅限于您的主目录中?那么保存可执行结果呢?一定会喜欢这些“改进”...

© www.soinside.com 2019 - 2024. All rights reserved.