无法对std::future使用std::chrono - GLIBCXX_3.4.19未找到
Unable to use std::chrono with std::future - GLIBCXX_3.4.19 not found
我试图在我的应用程序中使用std::future::wait_for(std::chrono::duration)
(事实上,我根本不想等待,这会使这更令人沮丧,正如您将看到的),但是在使用std::chrono
的任何东西时,我无法在为我的BeagleBone Black交叉编译后运行应用程序:
/usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.19' not found
在我将以下代码行添加到我的代码之前,这个项目在旧版本的GLIBCXX上编译和运行得很好,但只是为了能够检查future的值是否准备好而不阻塞,我突然需要所有这些新库:
if (myFuture.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
return true;
BeagleBone Black来自GCC 4.6.3的GLIBCXX_3.4.17
-我已经检查了系统上的c++头文件,正如我所怀疑的,我需要的所有功能都来自chrono库。那么为什么它要求版本3.4.19呢?
我尝试用sudo apt-get upgrade
更新和升级Debian,希望能添加新的库。这没有效果。此外,我真的希望能够在库存图像上运行。
所以我尝试静态链接libstdc++
与-static-libstdc++
添加到我的LD标志。现在我显然错过了GLIBC-2.7
,不能以同样的方式与-static-libgcc
我能够按照另一个答案中的步骤编译需要3.4.19的函数的先前版本。
首先,我检查了从3.4.19需要什么:
$ objdump -T myapp | grep "GLIBCXX_3.4.19"
00000000 DF *UND* 00000000 GLIBCXX_3.4.19 _ZNSt6chrono3_V212system_clock3nowEv
然后在库中搜索相同的符号
$ objdump -T /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep "_ZNSt6chrono3_V212system_clock3nowEv"
但是这没有返回任何结果。凭直觉,我试着用"chrono"来代替
$ objdump -T /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep "chrono"
00080828 g DF .text 0000002a GLIBCXX_3.4.11 _ZNSt6chrono12system_clock3nowEv
0008ae38 g DO .rodata 00000001 GLIBCXX_3.4.11 _ZNSt6chrono12system_clock12is_monotonicE
宾果。虽然不是一模一样,但对我来说已经足够了。我在源文件中添加了一个汇编指令来更新所请求符号的链接。
__asm__(".symver _ZNSt6chrono3_V212system_clock3nowEv,_ZNSt6chrono12system_clock3nowEv@GLIBCXX_3.4.11");
虽然它现在编译并运行,但我不能肯定地说这个替代工作,因为我有其他障碍要绕过,但我认为我可以安全地说这是一个解决方案。
- 架构决策:返回std::future还是提供回调
- std::p romise::set_value() 和 std::future::wait() 是否提供内存围栏?
- 修改在 std::future 的 lambda 中引用捕获的值
- C++ std::future没有被调用
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- Make zmqpp::socket::connect a std::future
- std::future可以比std::promise活得更长吗
- std::future::get()或std::future::wait()是std::thread::join()的替
- 当 std::future 准备好被检索时发出信号主线程
- 当多次调用时,"std::future::then"的行为是什么?
- 使用 std::future 的不完整类型无效使用
- 为什么 std::future::wait_for 的行为不符合预期?
- 是什么给了 std::future 一些共享状态
- STD :: Future no_state异常与断言
- 标准是否保证在移动std::p ackaged_task后安全使用std::future?
- 将 Boost 链与 std::future 结合使用
- 删除 std::future 和 std::p romise 的空白专用化
- std::future给了我错误3,我做错了什么
- 如何在 std::future 的向量中调用异步函数
- 在 std::future::unwrap() 和 std::future::get() 中竞争