我正在尝试使用 VS Code 的通过 ssh 功能进行远程开发。连接到远程服务器时我遇到:
Missing GLIBCXX >= 3.4.18!
>Found versions 3.4.1
> 3.4.2
> ...
> 3.4.13
Missing GLIBC >= 2.17!
Found version ldd (GNU libc) 2.12
Run Code Online (Sandbox Code Playgroud)
在遥控器上,我加载模块gcc/7.3.0并确认版本:
gcc --version
> gcc (GCC) 7.3.0
Run Code Online (Sandbox Code Playgroud)
并且还发现:
ldd --version
> ldd (GNU libc) 2.12
Run Code Online (Sandbox Code Playgroud)
在/lib我找到libc-2.12.so并发现GLIBC的最大版本是2.12:
strings libc-2.12.so | grep GLIB
> GLIBC_2.0
> GLIBC_2.1
> ...
> GLIBC_2.12
Run Code Online (Sandbox Code Playgroud)
但是,我可以在系统的另一个位置找到所需版本的库/usr/lots/of/directories/gcc/x86_64-pc-linux-gnu/7.3.0:
strings libstdc++.so.6.0.24 | grep GLIB
> GLIBCXX_3.4
> ...
> GLIBCXX_3.4.24
> ... …Run Code Online (Sandbox Code Playgroud) 我正在运行一个应用程序,它向我抛出一个错误:
“需要 C++ 标头‘string_view’。您需要在主机系统上安装更新的 libstdc++。”
有人可以指导我如何在我的计算机上获取更新版本的“libstdc++”吗?
谢谢
我试图在 rstudio 中加载 Seurat 包并收到此错误
\nError: package or namespace load failed for \xe2\x80\x98Seurat\xe2\x80\x99 in dyn.load(file, DLLpath = DLLpath, ...):\n unable to load shared object '/wdata/msmuhammad/workbench/miniconda3/envs/test2/lib/R/library/Rcpp/libs/Rcpp.so':\n /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /wdata/msmuhammad/workbench/miniconda3/envs/test2/lib/R/library/Rcpp/libs/Rcpp.so)\nRun Code Online (Sandbox Code Playgroud)\n我在 conda 环境中使用 rstudio
\n我发现了一个关于没有版本“GLIBCXX_3.4.26”的相同问题的问题。这导致我运行这个命令
\nstrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX \nRun Code Online (Sandbox Code Playgroud)\n我得到了这个:
\nGLIBCXX_3.4\nGLIBCXX_3.4.1\nGLIBCXX_3.4.2\nGLIBCXX_3.4.3\nGLIBCXX_3.4.4\nGLIBCXX_3.4.5\nGLIBCXX_3.4.6\nGLIBCXX_3.4.7\nGLIBCXX_3.4.8\nGLIBCXX_3.4.9\nGLIBCXX_3.4.10\nGLIBCXX_3.4.11\nGLIBCXX_3.4.12\nGLIBCXX_3.4.13\nGLIBCXX_3.4.14\nGLIBCXX_3.4.15\nGLIBCXX_3.4.16\nGLIBCXX_3.4.17\nGLIBCXX_3.4.18\nGLIBCXX_3.4.19\nGLIBCXX_3.4.20\nGLIBCXX_3.4.21\nGLIBCXX_3.4.22\nGLIBCXX_3.4.23\nGLIBCXX_3.4.24\nGLIBCXX_3.4.25\nGLIBCXX_DEBUG_MESSAGE_LENGTH\nRun Code Online (Sandbox Code Playgroud)\n因此,它没有所需的版本,我无法从终端安装 libstdc++,因为该步骤需要 sudo 命令,而我不是 sudo 者之一,而且我一直被拒绝许可。
\n乌班图18.04.6
\nLinux 4.15.0-154-通用
\n那么除了sudo命令之外还有什么办法可以解决这个问题呢?
\n我在 conda 环境中尝试了这个命令
\nstrings msmuhammad/workbench/miniconda3/envs/test2/lib/libstdc++.so.6 | grep GLIBCXX\nRun Code Online (Sandbox Code Playgroud)\n我得到了这个
\nGLIBCXX_3.4\nGLIBCXX_3.4.1\nGLIBCXX_3.4.2\nGLIBCXX_3.4.3\nGLIBCXX_3.4.4\nGLIBCXX_3.4.5\nGLIBCXX_3.4.6\nGLIBCXX_3.4.7\nGLIBCXX_3.4.8\nGLIBCXX_3.4.9\nGLIBCXX_3.4.10\nGLIBCXX_3.4.11\nGLIBCXX_3.4.12\nGLIBCXX_3.4.13\nGLIBCXX_3.4.14\nGLIBCXX_3.4.15\nGLIBCXX_3.4.16\nGLIBCXX_3.4.17\nGLIBCXX_3.4.18\nGLIBCXX_3.4.19\nGLIBCXX_3.4.20\nGLIBCXX_3.4.21\nGLIBCXX_3.4.22\nGLIBCXX_3.4.23\nGLIBCXX_3.4.24\nGLIBCXX_3.4.25\nGLIBCXX_3.4.26\nGLIBCXX_3.4.27\nGLIBCXX_3.4.28\nGLIBCXX_3.4.29\nGLIBCXX_DEBUG_MESSAGE_LENGTH\n_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4\n_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5\n_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4\n_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5\nGLIBCXX_3.4.21\nGLIBCXX_3.4.9\n_ZSt10adopt_lock@@GLIBCXX_3.4.11\nGLIBCXX_3.4.10\nGLIBCXX_3.4.16\nGLIBCXX_3.4.1\n_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4\nGLIBCXX_3.4.28\n_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4\nGLIBCXX_3.4.25\n_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5\n_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5\n_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4\n_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4\n_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5\n_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4\n_ZSt10defer_lock@@GLIBCXX_3.4.11\n_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4\n_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5\n_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5\n_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5\n_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4\nGLIBCXX_3.4.24\n_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11\nGLIBCXX_3.4.20\n_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5\nGLIBCXX_3.4.12\n_ZNSi6ignoreEv@@GLIBCXX_3.4.5\nGLIBCXX_3.4.2\n_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5\nGLIBCXX_3.4.6\nGLIBCXX_3.4.15\n_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5\n_ZNSs9_M_assignEPcmc@GLIBCXX_3.4\nGLIBCXX_3.4.19\n_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4\n_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4\nGLIBCXX_3.4.27\n_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4\n_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4\n_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4\n_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4\n_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5\nGLIBCXX_3.4.23\nGLIBCXX_3.4.3\nGLIBCXX_3.4.7\n_ZNSi6ignoreEl@@GLIBCXX_3.4.5\n_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5\n_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4\n_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5\n_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5\nGLIBCXX_3.4.18\n_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4\n_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5\n_ZSt15future_category@@GLIBCXX_3.4.14\n_ZNSi6ignoreEl@GLIBCXX_3.4\nGLIBCXX_3.4.29\n_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4\n_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4\n_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4\n_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4\n_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11\n_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5\n_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4\n_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4\n_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4\n_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5\n_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4\n_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5\n_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4\nGLIBCXX_3.4.22\n_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5\n_ZNSi6ignoreEv@GLIBCXX_3.4\n_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5\nGLIBCXX_3.4.8\nGLIBCXX_3.4.13\n_ZSt11try_to_lock@@GLIBCXX_3.4.11\n_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5\nGLIBCXX_3.4.17\nGLIBCXX_3.4.4\n_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5\n_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4\n_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5\nGLIBCXX_3.4.26\n_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4\n …Run Code Online (Sandbox Code Playgroud) 当格式包含“%y”或“%Y”时,std::get_time 的行为方式相同,在这两种情况下,它都会尝试读取四位数年份。我做错了什么还是一个错误?
示例代码:
#include <iostream>
#include <iomanip>
void testDate(const char *format,const char *date)
{
std::istringstream ds(date);
std::tm tm = {};
ds >> std::get_time(&tm,format);
std::cout<<date<<" parsed using "<<format<<" -> Year: "<<tm.tm_year+1900<<" Month: "<<tm.tm_mon<<" Day: "<<tm.tm_mday<<std::endl;
}
int main()
{
testDate("%y%m%d","101112");
testDate("%Y%m%d","101112");
testDate("%y%m%d","20101112");
testDate("%Y%m%d","20101112");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
101112 parsed using %y%m%d -> Year: 1011 Month: 11 Day: 0
101112 parsed using %Y%m%d -> Year: 1011 Month: 11 Day: 0
20101112 parsed using %y%m%d -> Year: 2010 Month: 10 Day: 12
20101112 …Run Code Online (Sandbox Code Playgroud) 有一个小问题.我有c ++代码,它链接到一些库.我以前(原始)exe源自源代码,并且在第一台机器上运行完美.还有第二台机器,在那里我处理源代码,更改它等.在第二台机器上,该源代码的构建工作正常,当我复制second.exe并尝试在第一台机器上运行它时萌芽它显示错误消息
"程序入口点_ZNSt8_detail15_List_node_base7_M_hookEPS0_无法位于动态链接库libstdc ++ - 6.dll中."
有一点,second.exe被复制到与original.exe相同的文件夹中,所以它应该看到ddl'因为原来的dll与original.exe在同一个文件夹中,不应该吗?它是用MinGW编译的,在NetBeans和项目属性中工作,有库添加(通过添加库文件)但是libstdc ++ - 6.dll没有添加.libstdc ++ - 6.dll在original.exe的文件夹中
谢谢
我面临一个奇怪的链接器问题clang ++ - 它能够找到std :: string类的定义,而不是std :: ios_base :: failure class的定义.
$ cat foo.cpp
#include <string>
#include <iostream>
int main()
{
std::string msg = "hello world";
std::ios_base::failure f(msg);
std::cout << msg << std::endl;
return 0;
}
$ clang++ foo.cpp
/tmp/foo-b77625.o: In function `main':
foo.cpp:(.text+0x4d): undefined reference to `std::ios_base::failure::failure(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation)
$ clang++ --version
clang version 3.7.0 (trunk 239466)
Target: x86_64-unknown-linux-gnu
Thread model: posix
Run Code Online (Sandbox Code Playgroud)
我注意到如果我评论std …
我试图在版本4.9.0之前使用GCC分发的版本中测试libstdc++因为std::regex已实现但很大程度上已破坏的版本libstdc++.
注意:
我需要测试版本libstdc++,而不是GCC,因为Clang也支持使用libstdc++标准库.这排除了测试__GNUC_PATCHLEVEL__,__GNUC__和__GNUC_MINOR__宏.
该__GLIBCXX__宏是一个日期,而不是一个版本号并不会单调递增.例如,GCC 4.8.4附带#define __GLIBCXX__ 20150426,比GCC 4.9.0的发布日期更新.
有没有可靠的方法来测试它的版本libstdc++不依赖于使用GCC我的编译器?
我有以下代码令我感到惊讶(使用libstdc ++ 4.8)...
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
std::string s("some content");
std::stringstream ss(s, std::ios::in|std::ios::ate);
std::istream& file = ss;
//ss.clear(); Makes no difference...
std::cout << "tellg() pos: " << file.tellg() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
...具有以下输出.
tellg()pos:0
此行为与使用std :: ifstream(std :: ios :: ate)时不同.
std :: sort的libcxx(llvm版本的c ++标准库)使用相同的元素调用比较谓词,即比较函子的两个参数都指向要排序的序列中的相同位置.一个简化的例子来说明这一点.
$ cat a.cc
#include <algorithm>
#include <vector>
#include <cassert>
int main(int argc, char** argv) {
int size = 100;
std::vector<int> v(size);
// Elements in v are unique.
for (int i = 0; i < size; ++i)
v[i] = i;
std::sort(v.begin(), v.end(),
[&](int x, int y) { assert(x != y); return x < y; });
return 0;
}
$ clang++ -std=c++11 -stdlib=libc++ a.cc -o a.out
$ ./a.out
a.out: a.cc:14: auto main(int, char **)::(anonymous class)::operator()(int, int) const: Assertion …Run Code Online (Sandbox Code Playgroud) struct Y { };
struct X : std::tuple<Y> { };
int main()
{
std::get<0>(std::make_tuple(X{}));
}
Run Code Online (Sandbox Code Playgroud)
clang++当使用libc ++时,上面的代码编译并按预期工作.
上面的代码失败,都编译clang++和g++使用时的libstdc ++,错误如下:
include/c++/7.0.1/tuple:1302:36:
error: no matching function for call to ‘__get_helper<0>(std::tuple<X>&)’
{ return std::__get_helper<__i>(__t); }
~~~~~~~~~~~~~~~~~~~~~~^~~~~
include/c++/7.0.1/tuple:1290:5:
note: candidate: template<long unsigned int __i, class _Head, class ... _Tail>
constexpr _Head& std::__get_helper(std::_Tuple_impl<_Idx, _Head, _Tail ...>&)
__get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
^~~~~~~~~~~~
include/c++/7.0.1/tuple:1290:5:
note: template argument deduction/substitution failed:
include/c++/7.0.1/tuple:1302:36:
note: ‘std::_Tuple_impl<0, _Head, _Tail ...>’ is …Run Code Online (Sandbox Code Playgroud)