- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
背景:我有运行 nodejs 6.10 的 AWS Lambda。对于我的代码,我需要一个 C 库来运行算法。这是由 node-gyp 在我的机器上编译的。
我的构建服务器是一个过时的 ubuntu 14.04,我在上面运行我的 node-gyp 编译代码,一切都按预期工作。
现在,我已经将我的 ubuntu 更新到 17.04 版本。这似乎给我带来了 Version of GLIBCXX 的问题
我通过运行收集了不同环境下的 GLIBCXX 版本
在这里您可以看到在 Ubuntu 17.04 上 GLIBCXX 从 v3.4 到 3.4.22 可用,而其他环境只有 3.4.19 可用。
我在 Ubuntu 17.04 上编译的代码正在寻找在运行环境中不可用的 GLIBCXX_3.4.21 并导致以下错误
"errorMessage": "/var/lang/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /var/task/addon.node)",
请求:是否有任何方法(除了使用自定义 docker /回到旧版本的 ubuntu 等)我可以将编译器设置为使用 GLIBCXX_3.4.19,我最终可以更改环境时(AWS lambda 支持最新版本?)。理想情况下,我正在寻找一个编译器标志,我可以在机器上或通过我可以传递的 node-gyp 永久设置,以便我使用正确的版本。
观察:即使我有 GLIBCXX_3.4.22,它也只是链接 GLIBCXX_3.4.21(或者它们向后兼容?)
最佳答案
Is there any method by which (other than using custom dockers / going back to older versions of ubuntu etc) where i can set the compiler to use GLIBCXX_3.4.19, which i can eventually change when the environments (AWS lambda supports the latest version?). Ideally i am looking for a compiler flag that i can set permanently on the machine or via node-gyp that i can pass on so that i use the right version.
您可以安装 earlier version of g++在 Ubuntu 17.04 上并使用该工具链编译您的软件。 g++-4.7 可以工作,但我不确定。检查当前构建机器上的版本。如果愿意,您甚至可以将这个较旧的编译器放入容器中,但这不是必需的。
even though I have GLIBCXX_3.4.22 it is only linkling GLIBCXX_3.4.21 ( or they are backward compatible? )
这些符号的全部意义在于具有明确定义的方式来指定 ABI 不兼容。您恰好没有使用 GLIBCXX_3.4.22 引入的任何更改,但确实使用了 GLIBCXX_3.4.22 引入的更改GLIBCXX_3.4.21(由您使用的任何编译器编译时)。
关于c++ - 使用稍旧版本的 GLIBCXX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45035750/
背景:我有运行 nodejs 6.10 的 AWS Lambda。对于我的代码,我需要一个 C 库来运行算法。这是由 node-gyp 在我的机器上编译的。 我的构建服务器是一个过时的 ubuntu
如果我在我的机器上编译一个 C++ 程序,并在另一台机器上运行它(使用较旧的软件),我会得到:/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not
如果我在我的机器上编译一个 C++ 程序,并在另一个(使用旧软件)上运行它,我会得到:/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not foun
我在同一台机器上编译、链接和运行的程序在尝试运行时怎么可能出现 GLIBCXX 版本错误?有人知道吗? 这是我得到的错误: 0.01s$ build/test/gamgee_test build/te
当我在我的计算机上使用 g++ 编译一个 c++ 程序并将可执行文件传输到我的大学服务器上运行它时,我得到了 ./main: /usr/lib/libstdc++.so.6: version `GLI
这是对之前在这里提出的问题的扩展:libstdc++ GLIBCXX version errors 我有一个在本地运行良好的 Node.js 应用程序 (Ubuntu 16.04),但是当我将 bun
我尝试使用 gdb 调试程序,但在运行命令后出现错误(在 gdb 内) /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found 我确
[情况] 我正在开发一个 C++ 库。我遇到了 GLIBCXX 版本的问题。 之前,我在版 native GLIBCXX_3.4.22上开发。 但我的库无法在具有 GLIBCXX_3.4.19 的目标
众所周知,glibc(据我所知,还有 glibstd++)使用符号版本控制机制。 (详情引用:How can I link to a specific glibc version。) 问题是如何确定链
ImportError:/lib64/libstdc++.so.6:未找到版本“GLIBCXX_3.4.20” 我在我的系统中安装 python 包(fbprophet)时遇到了这个错误 我的环境详细
我想为在 Linaro 14.04 上运行的 ARM 目标交叉编译一个软件。 当我使用 arm-linux-gnueabihf-g++ 从我的 Ubuntu 18.04 交叉编译,并尝试在目标上运行它
我已经搜索了很多,但没有解决这个问题,所以我想把它放在这里。 我有在 Ubuntu 上编译得很好的源代码,我想在我的 Centos 7 机器上使用它。为了这个问题,让我们假设在Centos上编译代码是
我试过用这个文件编译 #include #include #include #include #include using namespace cv; static void help( c
假设我有以下本地 gcc, g++ 版本: $ gcc -v $ g++ -v gcc version 6.3.1 与我的编译器版本相比,我不理解以下内容的关系和含义: 这是指什么? /usr/lib
我一直在努力关注this example在 Ubuntu 11.10 上使用 mex 在 MATLAB 中编译 vtk。我使用的mex命令如下: mex -I/usr/include/vtk-5.6
我已经安装了bsoft当我想运行一些需要 libstdc++.so.6 的函数时遇到问题。 bimg: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9
我有一个使用 Makefile 构建的共享库文件。我遇到了一个问题,在构建库之后,我会遇到可怕的 GLIBCXX_ not found 链接器错误。 这个案例特别奇怪。当我使用 -g3 标志编译时,我
我在玩弄valarrays当我碰到某些东西时,我认为是编译器的 STL 实现中的错误。这是我可以制作的最小示例: #include #include #include #include #in
鉴于此版本的 stdc++ 库的 GLIBCXX 版本(示例 GLIBCXX_3.4.17),在哪里可以找到指定已实现哪些功能的文档? 此外,有没有一种方法可以在给定 SO NAME 版本的情况下提供
我是一名优秀的程序员,十分优秀!