Tôi đã xây dựng GCC 4.7 trên hệ thống Linux 32 bit x86 của mình. Khi tôi cố gắng biên dịch chéo với cờ -m64 tôi nhận đượcGCC: xin lỗi, chưa thực hiện: chế độ 64 bit không được biên dịch trong
xin lỗi, chưa thực hiện: 64-bit chế độ không được biên dịch trong
trong khi trình biên dịch được cung cấp bởi mặc định bằng cách phân phối Linux của tôi có thể chéo- biên dịch với -m64.
Tôi phải chuyển sang ./configure để kích hoạt chế độ 64 bit trong GCC? Đây là những lựa chọn tôi sử dụng để xây dựng GCC 4.7:
$ /usr/local/bin/g++ -v Using built-in specs.
COLLECT_GCC=/usr/local/bin/g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.7.0/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ./configure --enable-multiarch --with-cloog=/usr/local/ --with-mpfr=/usr/local/ --with-ppl=/usr/local/ --verbose --enable-languages=c,c++
Thread model: posix gcc version 4.7.0 20120113 (experimental) (GCC)
EDIT:
enable-multilib và enable-mục tiêu = i686-pc-linux-gnu, x86_64-PC- linux-gnu
không thay đổi tình huống. Trình biên dịch vẫn than phiền về chế độ 65 bit không được biên soạn trong:
$ g ++ -v Sử dụng thông số kỹ thuật dựng sẵn. COLLECT_GCC = g ++ COLLECT_LTO_WRAPPER =/usr/local/libexec/gcc/i686-pc-linux-gnu/4.7.0/lto-wrapper Mục tiêu: i686-pc-linux-gnu Được cấu hình bằng: ./configure - có thể truy cập -multiarch --with-cloog =/usr/local/--with-mpfr =/usr/local/--with-ppl =/usr/local/--verbose --enable-languages = c, C++ - có thể -multilib --enable-targets = i686-pc-linux-gnu, x86_64-pc-linux-gnu Mô hình chủ đề: posix gcc phiên bản 4.7.0 20120113 (thử nghiệm) (GCC)
$ g ++ -m64 c.cpp c.cpp: 1: 0: xin lỗi, chưa thực hiện: chế độ 64-bit không biên soạn trong
'--enable-multiarch' gợi ý Debian (hoặc đạo hàm), và như tôi nhớ, GCC của FSF không thực sự hoạt động tốt với hệ thống đa hệ thống của Debian. Bạn có thể cần phải áp dụng các bản vá lỗi của Debian cho các ảnh chụp nhanh GCC của FSF. – hvd
Tất nhiên nó sẽ không hoạt động như thế này. Multilib có khả năng tương thích * lạc hậu * và không * chuyển tiếp *. Để biên dịch mã 64 bit trên máy 32 bit, bạn phải xây dựng SDK tối thiểu: binutils + libc [musl, uclibc, glibc, ...] + gcc. – 0andriy