14.04.01 32-bit: Thiếu g ++ 64-bit bao gồm các tệp khi biên dịch chéo


8

Vì vậy, tôi đã cài đặt Xubfox 14.04.1 32 bit. Chúng tôi có một số mã giao diện nơi chúng tôi dự định phát hành SO cho các nền tảng khác nhau mà chúng tôi hỗ trợ và Windows DLL. (Có, tôi biết, phát hành nhị phân xấu, nhưng cũng không liên quan ở đây.)

Tôi đang cố gắng xây dựng SO 32 bit và 64 bit với 14.04,01 bit 32 bit, sử dụng các đối số -m32/ -m64gcc / g ++. Phiên bản 32 bit hoạt động tốt, nhưng phiên bản 64 bit không thành công với

/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory

Kiểm tra bao gồm, tập tin đó thực sự có mặt trong 32 bit nhưng thiếu 64 bit.

Googling vấn đề, điều này dường như đã xảy ra trong quá khứ cho GCC / G ++ 4.6, nhưng sau đó được đánh dấu là đã sửa. Nhưng 14.04.1 đang sử dụng GCC / G ++ 4.8, điều này cho thấy đã có hồi quy trong các thư viện trong GCC / G ++ 4.8. Đây có phải là một cái gì đó mà bất cứ ai khác đã nhìn thấy?

Tôi có thể thiết lập VM mới cho 64-bit 14.04.1 nếu cần và xem liệu điều đó có chọn đúng phiên bản thư viện không. Tôi thà không nếu có thể, bởi vì tôi đã có một loạt các thứ khác tôi cũng phải cài đặt lại. Có một giải pháp tốt hơn? Và nếu tôi đã cài đặt 64-bit 14.04.1, tôi chắc chắn có thể biên dịch chéo trở lại 32-bit mà không bỏ lỡ các tiêu đề theo hướng khác không?


... Có lẽ bạn nên tránh đề cập đến những thứ "không liên quan ở đây", vì nó không liên quan.
mikewhthing

2
Bạn đã cài đặt g++-multilibgói?
Steeldo

@steel ấn Cảm ơn - thế thôi! Có vẻ như cài đặt 64 bit có mặc định, nhưng cài đặt 32 bit thì không. OK, một cái gì đó khác để thêm vào danh sách kiểm tra "cách thiết lập máy ảo xây dựng Linux" của tôi. :) Nó có vẻ cơ bản, nhưng tôi đã không nhận ra đây là câu trả lời trong các câu hỏi của người khác cho cùng một lỗi biên dịch và tôi không thực sự là một chuyên gia Linux.
Graham

Câu trả lời:


9

Tệp config.h 64 bit / c ++ được cung cấp trên các hệ thống 32 bit (và ngược lại) bằng cách cài đặt g++-multilibgói, vì vậy bạn cần cài đặt gói đó bằng Trung tâm phần mềm, Synaptic hoặc qua thiết bị đầu cuối bằng cách sử dụng

sudo apt-get install g++-multilib

Đây chỉ là gói phụ thuộc giải quyết g++-4.8-multilibcho phiên bản gcc / g ++ mặc định và đến lượt nó phụ thuộc vào lib64stdc++-4.8-dev(biên dịch 64 bit trên 32 bit) hoặc libx32stdc++-4.8-dev(biên dịch 32 bit trên 64 bit) - đó là những gói chứa tập tin tiêu đề thực tế.

Có một bộ gói tương đương cho trình biên dịch C đơn giản gcc.


4
sudo apt-get install g++-5-multilibđã cho tôi phiên bản tôi cần. Nếu điều này không làm việc cho bạn, ghi chú sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get updatecũng là một phần trong cấu hình của tôi.
U007D
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.