मेरे 64 बिट सिस्टम पर मैंने देखा कि निम्नलिखित निर्देशिका मौजूद थी:
/usr/include/c++/4.4/x86_64-linux-gnu/32/bits
तब यह समझ में आता है कि मेरे 32 बिट सिस्टम पर जो 64bit क्रॉस कंपाइलिंग के लिए सेटअप किया गया था, उसी तरह की डायरेक्टरी होनी चाहिए:
/usr/include/c++/4.4/i686-linux-gnu/64/bits
मैंने दोबारा जाँच की और यह निर्देशिका मौजूद नहीं थी। g++
वर्बोज़ पैरामीटर के साथ चलने से पता चला कि संकलक वास्तव में इस स्थान में कुछ ढूंढ रहा था:
jesse@shalored:~/projects/test$ g++ -v -m64 main.cpp
Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
COLLECT_GCC_OPTIONS='-v' '-m64' '-shared-libgcc' '-mtune=generic'
/usr/lib/gcc/i686-linux-gnu/4.4.5/cc1plus -quiet -v -imultilib 64 -D_GNU_SOURCE main.cpp -D_FORTIFY_SOURCE=2 -quiet -dumpbase main.cpp -m64 -mtune=generic -auxbase main -version -fstack-protector -o /tmp/ccMvIfFH.s
ignoring nonexistent directory "/usr/include/c++/4.4/i686-linux-gnu/64"
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../i686-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/include/c++/4.4
/usr/include/c++/4.4/backward
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.4.5/include
/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
GNU C++ (Ubuntu/Linaro 4.4.4-14ubuntu5) version 4.4.5 (i686-linux-gnu)
compiled by GNU C version 4.4.5, GMP version 4.3.2, MPFR version 3.0.0-p3.
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128197
Compiler executable checksum: 1fe36891f4a5f71e4a498e712867261c
In file included from main.cpp:1:
/usr/include/c++/4.4/iostream:39: fatal error: bits/c++config.h: No such file or directory
compilation terminated.
ignoring nonexistent directory
सुराग के संबंध में त्रुटि थी। दुर्भाग्य से, मुझे अभी भी पता नहीं है कि इस निर्देशिका को दिखाने के लिए मुझे किस पैकेज को स्थापित करने की आवश्यकता है इसलिए मैंने /usr/include/c++/4.4/x86_64-linux-gnu/bits
अपनी 32 बिट मशीन /usr/include/c++/4.4/i686-linux-gnu/64/bits
पर 64 बिट मशीन से निर्देशिका को कॉपी किया ।
अब सिर्फ -m64
सही ढंग से काम करता है। मुख्य दोष यह है कि यह अभी भी चीजों को करने का सही तरीका नहीं है और मैं अनुमान लगा रहा हूं कि अगली बार जब अपडेट प्रबंधक स्थापित हो और जी ++ चीजों को अपडेट टूट जाए।