C ++找不到包含
c++ fails to find includes
刚刚在 debian 7 中安装 build-essentinals。
但我注意到 c++ 的包含在 /usr/include/c++/4.7...
有人知道为什么吗?据我记得,包括曾经在 /usr/include 中...
现在一切都失败了...
即
main.c:2:20: fatal error iostream: No such file or directory
即使我将它包含在 -I 中,headers 也是从 headers 调用的,它不会找到任何东西,例如:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
所以因为位不在 /usr/include 但在 /usr/include/c++/4.7 编译器找不到它...
我正在使用 g++
crafter# g++ -o craft main.cpp
In file included from /usr/include/c++/4.7/x86_64-linux-gnu/bits/os_defines.h:40:0,
from /usr/include/c++/4.7/x86_64-linux-gnu/bits/c++config.h:414,
from /usr/include/c++/4.7/iostream:39,
from main.cpp:2:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
编译终止。
有人知道如何解决这个问题吗?
感谢您的帮助!
只需将 include directlory 放入编译器的 -I
参数中,例如:
$(CC) -I/usr/include/c++/4.7 ...
您正在使用 gcc
编译 C++ 代码,这导致 header 查找过程中未考虑 C++ 系统 header。请改用 g++
命令。
此外,您应该将 main.c
重命名为 main.cpp
,因为您使用的是 C++
功能。
最后,用gcc
编译一个.cpp
文件将清除预处理和编译阶段,但链接失败,因为不会隐式添加libstdc++
。
您的命令行应类似于 g++ main.cpp -o outname
。
显然是 32/64 bit mixup。通过为 32 位版本安装 libc6-dev-i386
或为 64 位版本安装解决。
Stefano Sanfilipo 表示,确实存在 32 位和 64 位库的混淆。
我按照建议通过删除所有开发包解决了问题:
apt-get remove --purge libc6-dev
apt-get remove --purge libc6-dev-i386
然后重新安装:
apt-get install build-essential
现在可以完美编译了。
虽然 MSalters 也看到了这个问题,但在这种情况下我应该怎么做才能让双方都得到信任?
此致,
大卫
刚刚在 debian 7 中安装 build-essentinals。 但我注意到 c++ 的包含在 /usr/include/c++/4.7... 有人知道为什么吗?据我记得,包括曾经在 /usr/include 中...
现在一切都失败了... 即
main.c:2:20: fatal error iostream: No such file or directory
即使我将它包含在 -I 中,headers 也是从 headers 调用的,它不会找到任何东西,例如:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
所以因为位不在 /usr/include 但在 /usr/include/c++/4.7 编译器找不到它...
我正在使用 g++
crafter# g++ -o craft main.cpp
In file included from /usr/include/c++/4.7/x86_64-linux-gnu/bits/os_defines.h:40:0,
from /usr/include/c++/4.7/x86_64-linux-gnu/bits/c++config.h:414,
from /usr/include/c++/4.7/iostream:39,
from main.cpp:2:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
编译终止。
有人知道如何解决这个问题吗?
感谢您的帮助!
只需将 include directlory 放入编译器的 -I
参数中,例如:
$(CC) -I/usr/include/c++/4.7 ...
您正在使用 gcc
编译 C++ 代码,这导致 header 查找过程中未考虑 C++ 系统 header。请改用 g++
命令。
此外,您应该将 main.c
重命名为 main.cpp
,因为您使用的是 C++
功能。
最后,用gcc
编译一个.cpp
文件将清除预处理和编译阶段,但链接失败,因为不会隐式添加libstdc++
。
您的命令行应类似于 g++ main.cpp -o outname
。
显然是 32/64 bit mixup。通过为 32 位版本安装 libc6-dev-i386
或为 64 位版本安装解决。
Stefano Sanfilipo 表示,确实存在 32 位和 64 位库的混淆。
我按照建议通过删除所有开发包解决了问题:
apt-get remove --purge libc6-dev
apt-get remove --purge libc6-dev-i386
然后重新安装:
apt-get install build-essential
现在可以完美编译了。
虽然 MSalters 也看到了这个问题,但在这种情况下我应该怎么做才能让双方都得到信任?
此致,
大卫