xg-sco 发表于 2021-8-9 22:42:19

人造人 发表于 2021-8-9 22:40


# g++ test2.cpp
In file included from test2.cpp:1:0:
/usr/include/c++/4.8.2/iostream:38:28: fatal error: bits/c++config.h: No such file or directory
#include <bits/c++config.h>
                            ^
compilation terminated.
# file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID=7ee0b059020fb47c71749930feab22cd4877bddf, not stripped

人造人 发表于 2021-8-9 22:43:08

g++ -I /usr/include/c++/4.8.2/i686-redhat-linux test2.cpp
file a.out

xg-sco 发表于 2021-8-9 22:45:40

人造人 发表于 2021-8-9 22:43


# g++ -I /usr/include/c++/4.8.2/i686-redhat-linux test2.cpp
# file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID=7ee0b059020fb47c71749930feab22cd4877bddf, not stripped

人造人 发表于 2021-8-9 22:47:03

xg-sco 发表于 2021-8-9 22:45


ls -F /usr/include/c++/4.8.2/i686-redhat-linux

xg-sco 发表于 2021-8-9 22:48:54

人造人 发表于 2021-8-9 22:47


# ls -F /usr/include/c++/4.8.2/i686-redhat-linux
bits/ext/

人造人 发表于 2021-8-9 22:51:16

xg-sco 发表于 2021-8-9 22:48


ls -F /usr/include/c++/4.8.2/i686-redhat-linux/ext/

xg-sco 发表于 2021-8-9 22:52:39

人造人 发表于 2021-8-9 22:51


# ls -F /usr/include/c++/4.8.2/i686-redhat-linux/ext/
opt_random.h

人造人 发表于 2021-8-9 23:03:09

ls -F /usr/include/c++/4.8.5/x86_64-redhat-linux
ls -F /usr/include/c++/4.8.5

xg-sco 发表于 2021-8-9 23:04:34

人造人 发表于 2021-8-9 23:03


# ls -F /usr/include/c++/4.8.5/x86_64-redhat-linux
ls: cannot access /usr/include/c++/4.8.5/x86_64-redhat-linux: No such file or directory
# ls -F /usr/include/c++/4.8.5
/usr/include/c++/4.8.5@

人造人 发表于 2021-8-9 23:16:59

32
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/x86_64-redhat-linux/32"

64
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/x86_64-redhat-linux"

现在是 x86_64-redhat-linux 这个目录不存在,只有 i686-redhat-linux,而且这个目录是在 4.8.2 下面,当前的编译器版本是 4.8.5
而且这个 i686 是真的 i686,因为这里面没有 32 目录
我不知道为什么会发生这种情况,既然 4.8.5 下面没有这个目录,那就用 4.8.2 下面的 i686 版本吧
如果手动引用这个目录的话,32 位编译和 64 位编译都能过
那么,修复 4.8.5 下面的目录
cp -r /usr/include/c++/4.8.2/i686-redhat-linux /usr/include/c++/4.8.5/x86_64-redhat-linux
cd /usr/include/c++/4.8.5/x86_64-redhat-linux
ls -s . 32

cd
g++ test2.cpp
g++ -m32 test2.cpp
g++ -m64 test2.cpp

人造人 发表于 2021-8-9 23:23:22

参考:https://stackoverflow.com/questions/4643197/missing-include-bits-cconfig-h-when-cross-compiling-64-bit-program-on-32-bit

xg-sco 发表于 2021-8-9 23:26:56

人造人 发表于 2021-8-9 23:16


# cp -r /usr/include/c++/4.8.2/i686-redhat-linux /usr/include/c++/4.8.5/x86_64-redhat-linux
# cd /usr/include/c++/4.8.5/x86_64-redhat-linux
# ls -s . 32
ls: cannot access 32: No such file or directory
.:
total 4
4 bits0 ext
# g++ test2.cpp
# g++ -m32 test2.cpp
In file included from test2.cpp:1:0:
/usr/include/c++/4.8.2/iostream:38:28: fatal error: bits/c++config.h: No such file or directory
#include <bits/c++config.h>
                            ^
compilation terminated.
# g++ -m64 test2.cpp

人造人 发表于 2021-8-9 23:29:26

xg-sco 发表于 2021-8-9 23:26


我不知道该说什么好,^_^
我居然把 ln 写成 ls
cd /usr/include/c++/4.8.5/x86_64-redhat-linux
ln -s .32
cd

g++ test2.cpp
g++ -m32 test2.cpp
g++ -m64 test2.cpp

人造人 发表于 2021-8-9 23:32:50

cd /usr/include/c++/4.8.5/x86_64-redhat-linux
ln -s . 32

cd
g++ test2.cpp
g++ -m32 test2.cpp
g++ -m64 test2.cpp

xg-sco 发表于 2021-8-9 23:34:54

人造人 发表于 2021-8-9 23:29
我不知道该说什么好,^_^
我居然把 ln 写成 ls
cd /usr/include/c++/4.8.5/x86_64-redhat-linux


好了,终于弄好了^_^

人造人 发表于 2021-8-9 23:35:48

xg-sco 发表于 2021-8-9 23:34
好了,终于弄好了^_^

^_^
页: 1 2 [3]
查看完整版本: fatal error: bits/c++config.h: No such file or directory