注意:最初我有很长的背景解释导致我尝试执行apt-get remove g++. 在 11.10(32 位)的全新安装中尝试此操作后,我已将其删除为无关紧要,然后在升级后,在 12.04 中。
看来只有12.04才有问题。是时候改变焦点了,看看这是否是一个报告的错误。
我没有找到任何看起来相关的东西,所以我将其报告为Bug #982716。
在试图解决编译 Octave 的问题时,我删除了编译 Octave 所需的所有软件包,以便我可以重新安装它们。在执行此操作时,我遇到了apt-get12.04 中的意外响应。
当我尝试删除g++软件包时,apt-get 会尝试安装g++-4.6. 我希望得到消息Package g++ is not installed, so not removed。为什么我没有?
me@BlueUbuntu64:~$ sudo apt-get -V --dry-run remove g++
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
g++-4.6 (4.6.3-1ubuntu4)
libstdc++6-4.6-dev (4.6.3-1ubuntu4)
Suggested packages:
g++-multilib (4.6.3-1ubuntu5)
g++-4.6-multilib (4.6.3-1ubuntu4)
gcc-4.6-doc (4.6.3-1ubuntu4)
libstdc++6-4.6-dbg (4.6.3-1ubuntu4)
libstdc++6-4.6-doc (4.6.3-1ubuntu4) …Run Code Online (Sandbox Code Playgroud) 我手动安装了最新的 Eclipse Juno(不是通过软件中心也不是 apt-get),然后从帮助 > 安装新软件菜单安装 Eclipse CDT。
但是,当我尝试编译一个简单的 C++ 代码时,它会显示类似Program "g++" not found in PATH 的错误。
我从终端尝试了 g++,它工作得很好。有谁知道问题可能出在哪里?
我想我不小心从我的机器上删除了几个文件,现在 G++ 无法编译。我尝试了apt-get remove它然后apt-get install它看看它是否会修复它,但它没有用。现在我完全不知道如何让 G++ 再次工作。
这是错误:
g++: error trying to exec 'cc1plus': execvp: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我使用的是 Ubuntu 12.04 Precise ARM 版本。
我正在尝试安装多个版本的 g++ 编译器以进行测试。
我想能够安装g++ 4.9.3,5.1.0,5.2.0,和6.1.0。
我知道我能做到
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y;
sudo apt-get update -qq
sudo apt-get install g++-4.9, g++5.1, g++5.2, g++6
Run Code Online (Sandbox Code Playgroud)
但是在我的测试中,它们最终都使用了系统安装的标准库,即g++-4-series 标准库。我可以说是因为当我编译代码时,标准库并没有做一些 C++11 标准说它应该做的事情,例如,std::string移动构造函数没有被标记为noexcept。但是在具有 gcc-6 标准库的 ubuntu-xenial 上,它是,并且其他相关问题已解决。
我可以看到libstdc++-4.8-dev在 ubuntu 存储库中有例如命名的包,但是当我安装较新的编译器时,它们似乎没有使用它们。
我也知道我可以在我的主目录中从源代码安装编译器,但是构建它们需要很长时间,travis-ci不幸的是我无法在其中完成。在 travis-ci 中,所有构建都会在一小时后超时。
有没有一种简单的方法可以配置从 ppa 安装的编译器以使用正确版本的 C++ 标准库,即它们发布的版本而不是系统默认版本?
有没有一种简单的方法可以使用不涉及从源代码构建的 apt-get 将编译器二进制文件及其所有关联的库安装到我的主目录中的文件夹中?
我找到了这些说明,上面说我可以使用-rpath标志或规格文件,或者调整LD_LIBRARY_PATH,但我不确定我应该设置哪些路径。另一个问题是,它不仅仅是动态链接器,ubuntu-toolchain-r/test编译器似乎libstdc++也在使用系统头文件,所以我需要以某种方式纠正它。
我目前的策略是,只下载源代码发布 tarball 并尝试摆弄配置标志,直到我能找到一种在 < 60 分钟内构建它的方法。一旦我让它构建一次,它就在我的“缓存”目录中,所以我项目的未来构建可以在 < 1 …
我有一些远程机器,我需要在那里编译一些源代码。我通常做的是写一个别名,它说的是:
alias g++='g++ `pkg-config --cflags opencv --libs opencv`'
Run Code Online (Sandbox Code Playgroud)
然后当我去远程编译时,我会做g++ -o test test.cpp.
无论出于何种原因,Ubuntu 不会让我这样做。相反,当我这样做时,Ubuntu 可以工作:
g++ file.cpp -o file `pkg-config --cflags opencv --libs opencv`
Run Code Online (Sandbox Code Playgroud)
但这意味着我不能为 g++ 编写别名。有没有办法可以编写一个带参数的别名?我该怎么办?
g++ --version在我的家用机器上读取7.4.0,但我经常在服务器上工作显示4.8.5。他们的服务器不支持-std=c++11编译器标志,但我的家用机器支持。它支持的最新标志是-std=c++0x。
但是,有时当我在家用计算机上编写代码时,使用-std=c++0x标志进行编译而不会出现错误,如果将其带到服务器的本地计算机上,则会出现错误。有趣的是,通过 SSH 连接到他们的服务器并没有出现问题。
我不完全确定该怎么做,我想我的本地机器可能会忽略该-std=c++0x标志,因为我有一个较新的版本。有没有办法强制指定特定版本?
如果有什么区别的话,我使用的是 Windows 10 和 LXSS (Ubuntu),而我连接的服务器使用的是 Redhat。
我已经从 Ubuntu 18.04 升级到 20.04,除了一些令人讨厌的grub问题之外,大多数东西都是开箱即用的。但是我的 QtCreator ( Qt Creator 4.11.0, Based on Qt 5.12.8 (GCC 9.3.0, 64 bit)) 在识别包含的库时遇到了问题。它在更新前运行良好的项目中显示了数千条错误消息。错误消息看起来都像链接器错误消息。一些例子:
error: 'std::string' (aka 'int') is not a class, namespace, or enumeration
error: no matching function for call to 'getline'
error: member reference base type 'std::ifstream' (aka 'int') is not a structure or union
error: no template named 'vector' in namespace 'std'
error: unknown type name 'SystemCallFactory' //this class is from the same project
Run Code Online (Sandbox Code Playgroud)
甚至 qt 和 std 库中的一些错误: …
我想通过包管理器(apt)获取最新版本的 g++(和 clang)。目前我需要自己编译 gcc/g++,这真的需要很多时间。
是否有任何带有“特殊包”的存储库,例如 g++-10-2、g++-11 或仅 g++-master?
我真的很好:-)
正如问题所说,我想知道默认的 ubuntu 编译器 g++ 是否具有图形用户界面。
我目前使用的是 Ubuntu 22.04.1 版本,但我使用的软件严格需要 gcc 4.8(根据安装指南)。我该如何安装它?
sudo apt-get install g++-4.8
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package g++-4.8
E: Couldn't find any package by glob 'g++-4.8'
E: Couldn't find any package by regex 'g++-4.8'
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?