首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"/usr/bin/ld:无法找到-lstdc++:没有这样的文件或目录“在运行flutter应用程序时

"/usr/bin/ld:无法找到-lstdc++:没有这样的文件或目录“在运行flutter应用程序时
EN

Stack Overflow用户
提问于 2022-11-23 08:25:48
回答 3查看 321关注 0票数 1

在linux桌面应用程序的flutter run上获取此错误

代码语言:javascript
运行
复制
Running "flutter pub get" in proj...            5.3s
Launching lib/main.dart on Linux in debug mode...
CMake Error at /usr/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake:62 (message):
  The C++ compiler

    "/usr/bin/clang++"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /media/kingbob/Dvolve/EData/proj/build/linux/x64/debug/CMakeFiles/CMakeTmp

    Run Build Command(s):/usr/bin/ninja cmTC_5f1b6 && [1/2] Building CXX object CMakeFiles/cmTC_5f1b6.dir/testCXXCompiler.cxx.o
    [2/2] Linking CXX executable cmTC_5f1b6
    FAILED: cmTC_5f1b6 
    : && /usr/bin/clang++   CMakeFiles/cmTC_5f1b6.dir/testCXXCompiler.cxx.o -o cmTC_5f1b6   && :
    /usr/bin/ld: cannot find -lstdc++: No such file or directory
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.





  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:2 (project)


Building Linux application...                                           
Exception: Unable to generate build files

颤振医生输出量

代码语言:javascript
运行
复制
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.3.8, on Ubuntu 22.04.1 LTS 5.15.0-53-generic, locale en_IN)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2021.3)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

• No issues found!

输出的clang++ -版本

代码语言:javascript
运行
复制
Ubuntu clang version 14.0.0-1ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

我注意到/usr/lib/libstdc++.so丢失了,所以手动创建了一个符号链接sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/libstdc++.so

然后我在flutter run上出现了这个错误

代码语言:javascript
运行
复制
Launching lib/main.dart on Linux in debug mode...
/usr/include/glib-2.0/glib/glib-typeof.h:39:10: fatal error: 'type_traits' file not found
/usr/include/glib-2.0/glib/glib-typeof.h:39:10: fatal error: 'type_traits' file not found
/usr/include/glib-2.0/glib/glib-typeof.h:39:10: fatal error: 'type_traits' file not found
/usr/include/glib-2.0/glib/glib-typeof.h:39:10: fatal error: 'type_traits' file not found
/usr/include/glib-2.0/glib/glib-typeof.h:39:10: fatal error: 'type_traits' file not found
/usr/include/glib-2.0/glib/glib-typeof.h:39:10: fatal error: 'type_traits' file not found
EN

回答 3

Stack Overflow用户

发布于 2022-11-24 07:12:09

结果,升级到clang-14导致了问题。我就是这样修好的:

  • 降级至clang-13
  • 如果/usr/lib/libstdc++.so不存在,则创建一个符号链接。sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/libstdc++.so
  • 如果获得fatal error: 'type_traits' file not found on flutter run,则导出clang包含路径export CPLUS_INCLUDE_PATH="${CPLUS_INCLUDE_PATH:+${CPLUS_INCLUDE_PATH}:}/usr/lib/llvm-13/include/c++/v1/"
票数 1
EN

Stack Overflow用户

发布于 2022-11-28 19:13:17

在系统升级之后,我遇到了一个类似的问题。过了一会儿,我意识到这是因为nvidia-driver-520-open安装了gcc-12。我使用与脚本clang-15一起安装的installClang15.shclang-15取决于并因此安装了libstdc++-11-devgcc-11。问题是,一旦安装了gcc-12clang++就会自动拿起它,而不是gcc-11。这可以通过clang++ --verbose确认,clang++ --verbose输出的内容如下

代码语言:javascript
运行
复制
Ubuntu clang version 15.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64

解决方案1:安装libstdc++-12-dev

多亏了这个GitHub评论,我才想到了这个解决方案。这是最简单的解决方案,但也有一些缺点。在Ubuntu上,您可以使用

代码语言:javascript
运行
复制
sudo apt install libstdc++-12-dev

我面临的缺点是:

  • 然后我将使用gcc的更新版本(版本12)。这可能需要(实际上确实需要)我更新我的代码。在这个问题的上下文中,这是非常有问题的,在这个问题中,一个人不一定控制代码。
  • 如果在6个月内,nvidia-driver-520-open需要gcc-13怎么办?我必须再次弄清楚为什么会出现这个错误,然后安装libstdc++-13-dev,这可能需要再次更新一些代码。

解决方案2:修复clang++使用的gcc安装

我没有找到任何干净和容易的方法去做,但有方法。clang-16到2022年11月28日还没有发布,但当建筑嘎吱声上市时,它有了一个新的选项--gcc-install-dir described 这里。这修正了编译:

代码语言:javascript
运行
复制
$HOME/src/llvm-project/staging/bin/clang++ --gcc-install-dir=/usr/lib/gcc/x86_64-linux-gnu/11 a.cpp

其中a.cpp是一个微不足道的C++“你好世界!”程序

代码语言:javascript
运行
复制
#include <iostream>
int main() { std::cout << "Hello World!" << std::endl; }

较早版本的clang具有--gcc-toolchain选项,由于描述论勒文的话语的原因,该选项不太有用。然而,您仍然可以独创性地做这个堆栈溢出回答建议的事情。TL;DR是

代码语言:javascript
运行
复制
sudo mkdir --parents /opt/gcc-root/lib/gcc/x86_64-linux-gnu
sudo ln --symbolic /usr/lib/gcc/x86_64-linux-gnu/11 /opt/gcc-root/lib/gcc/x86_64-linux-gnu/11
sudo ln --symbolic /usr/include /opt/gcc-root/

ln --symbolic /usr/include /opt/gcc-root/很重要,否则我会遇到增量构建方面的问题。然后,您应该能够用

代码语言:javascript
运行
复制
clang++ --gcc-toolchain=/opt/gcc-root a.cpp

这就留下了一个问题:“如何在整个系统范围内集成这个编译器选项?”我在这里找不到满意的答案。

  • 您可以使用描述为export CCC_OVERRIDE_OPTIONS=^--gcc-toolchain=/opt/gcc-root这里和文档化的论GitHub。这可能是这个问题范围内最好的解决办法。
  • 您可以创建一个名为clang++的shell脚本,其中包含#!/usr/bin/env /usr/local/bin/clang++ -gcc-toolchain=/opt/gcc-根"$@“ 然后使用export CXX=<PATH_TO_SCRIPT>/clang++。这在实践中做得很好:这是我快速而又肮脏的解决办法。但是,我担心工具链中的其他工具(如clang-tidyclangd)如果没有传递选项--gcc-toolchain,可能会出现问题。根据安装方式的不同,他们可能看不到该选项,因为它不会出现在用compile_commands.json创建的文件CMake变量中。
  • 你可以用clang配置文件。TL;DR是将clang++象征性地链接为例如fixed-gcc-root-clang++,然后在适当的位置创建一个文件fixed-gcc-root-clang++.cfg (对于clang-15,是/usr/lib/llvm-15/bin),其中包含选项--gcc-toolchain=/opt/gcc-root。最后,使用export CXX=fixed-gcc-root-clang++。一个问题是,如果某人或某物(例如IDE)直接使用clang++,您的配置文件将不会被读取。如果创建了指向fixed-gcc-root-clang++的新符号链接,例如c++ -> fixed-gcc-root-clang++,也会出现问题,因为在本例中,配置文件将不会被读取。
  • 我发现的最佳解决方案需要控制构建系统,因此它不适用于这个问题的上下文。解决方案是修改构建系统和vcpkg三重奏文件。由于打包问题(请记住,这是因为nvidia-driver-520-open安装了一个新的传递依赖项)在C++构建系统中找到了它的解决方案,我觉得这并不令人满意。因此,分离关注点原则没有得到尊重。
票数 0
EN

Stack Overflow用户

发布于 2022-11-29 09:26:00

安装如下:

重新安装所有依赖项(它现在包含在这里)

代码语言:javascript
运行
复制
sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev

您可以在这里阅读最后两个条目,https://github.com/flutter/flutter/issues/115909

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74543715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档