我的问题是我无法使用g ++
编译Hello World程序 #include <iostream>
using namespace std;
int main(void) {
cout << "Hello World!" << endl;
return 0;
}
编译器给了我留言:
evgeny@debian:~/Documents/Programming$ g++ test.cpp -o test
In file included from /usr/include/c++/4.9/clocale:42:0,
from /usr/include/x86_64-linux-gnu/c++/4.9/32/bits/c++locale.h:41,
from /usr/include/c++/4.9/bits/localefwd.h:40,
from /usr/include/c++/4.9/ios:41,
from /usr/include/c++/4.9/ostream:38,
from /usr/include/c++/4.9/iostream:39,
from test.cpp:1:
/usr/include/locale.h:29:25: fatal error: bits/locale.h: No such file or directory
#include <bits/locale.h>
^
compilation terminated.
我已经安装了libstdc ++ - developer,尝试使用-I / way-to-the-missing-lib,不同的架构密钥等,但它也不起作用。
架构信息 Linux debian 3.16.0-4-amd64#1 SMP Debian 3.16.43-2 + deb8u5(2017-09-19)x86_64 GNU / Linux
OS Debian 8.9
g ++版 g ++(Debian 4.9.2-10)4.9.2
已安装的软件包列表:
evgeny@debian:~$ dpkg --list | grep c++
ii lib32stdc++-4.9-dev 4.9.2-10 amd64 GNU Standard C++ Library v3 (development files)
ii lib32stdc++6 4.9.2-10 amd64 GNU Standard C++ Library v3 (32 bit Version)
ii libflac++6:amd64 1.3.0-3 amd64 Free Lossless Audio Codec - C++ runtime library
ii libgpgme++2 4:4.14.2-2+deb8u2 amd64 c++ wrapper library for gpgme
ii libsigc++-2.0-0c2a:amd64 2.4.0-1 amd64 type-safe Signal Framework for C++ - runtime
ii libstdc++-4.9-dev:amd64 4.9.2-10 amd64 GNU Standard C++ Library v3 (development files)
ii libstdc++6:amd64 4.9.2-10 amd64 GNU Standard C++ Library v3
ii libx32stdc++-4.9-dev 4.9.2-10 amd64 GNU Standard C++ Library v3 (development files)
ii libx32stdc++6 4.9.2-10 amd64 GNU Standard C++ Library v3 (x32)
有什么想法吗?我希望解决方案很明显,谢谢你。
答案 0 :(得分:0)
如果使用-m32
(2017年是一件奇怪的事情,因为大多数Linux都是64位),你需要32位库,例如lib32stdc++-7-dev
包(或lib32stdc++-6-dev
这取决于您在Debian上的g++
版本。)
test
的味道很差,它与标准(可能是内置的)test(1)相冲突。
我建议使用所有警告和调试信息编译您的本机架构(可能是x86-64),例如:使用
g++ -Wall -Wextra -g test.cpp -o mytest
当然,生成的可执行文件mytest
可能是64位。您可以使用file mytest
命令进行检查。
g++
4.9已经很老了。为什么不升级它?您可以安装GCC5或GCC6,例如与aptitude install g++-6
; 2017年10月,GCC的当前版本为GCC7
今天你最好至少学会C++11(不要浪费你的时间去学习更老的东西)。较旧的标准已经过时。因此,如果您希望获得该标准的良好支持,最好至少使用GCC6。
当然,您需要C ++标准库开发包。在我的Debian / Sid上,它是libstdc++-6-dev
build-essential
元数据包用于构建用C语言编写的基本实用程序,而不是用C ++编写。
您需要显式安装几个与C ++相关的软件包 (而且你不知道你安装了哪个)。
如果你知道一些用C ++编写的Debian软件包(例如fish
),你可以使用aptitude build-dep
命令;它会正确安装构建它所需的所有包,这将包括必要的C ++内容。所以你可以尝试aptitude build-dep fish
2017年10月,Debian的stable version是Debian的第9.2段;如果您使用较旧的版本,则应考虑升级您的版本。
答案 1 :(得分:-2)
你能在&#39; / usr / inlcude / bits&#39;中找到locale.h文件吗?目录,编译错误表明文件丢失。