Xin lỗi vì có nhiều câu hỏi tương tự, nhưng tôi nhận thấy rằng Googling cho truy vấn CMake luôn mang lại các kịch bản tương tự nhưng không giống nhau, các lệnh CMake xung đột và trên!Cách thích hợp để buộc biên dịch 32 bit sử dụng CMake
Tôi cần buộc dự án của tôi xây dựng các tệp nhị phân 32 bit vì tôi phải liên kết với thư viện chỉ có sẵn dưới dạng 32 bit. Tôi được chẩn đoán này dựa trên các thông báo lỗi như:
/usr/bin/ld: i386 architecture of input file `*external-32bit-lib*' is incompatible with i386:x86-64 output
Từ những gì tôi thu thập, tôi do đó nên sử dụng:
set (CMAKE_CXX_FLAGS "-m32")
này thay đổi mọi thứ - bây giờ tôi nhận được một số lỗi như:
/usr/bin/ld: i386 architecture of input file `*project-output-lib*' is incompatible with i386:x86-64 output
VÀ vẫn nhận được cùng một lỗi cho thư viện bên ngoài. Tôi nghĩ rằng điều này là do -m32
tạo gcc tạo các tệp nhị phân 32 bit, nhưng ld vẫn đang cố gắng cho đầu ra 64 bit? Hơn nữa Googling cho vấn đề này đã không cho bất kỳ thành công, vì vậy nếu bất cứ ai có thể xác minh rằng tôi đúng và đưa ra cách chính xác để làm điều này, tôi sẽ rất biết ơn!
Rất cám ơn!
Cảm ơn -đó cũng có thể là trường hợp - nhưng làm thế nào sẽ Tôi làm điều đó mặc dù CMake? Và đây có phải là cách hợp lý nhất hoặc thích hợp để làm điều đó không? Tôi đã làm sạch btw :) – jazzbassrob
Cập nhật câu trả lời. Xem liên kết. Tôi có nghĩa là làm sạch bàn tay của bạn, bạn đang bẩn :) –
Chúc mừng, nhưng tiếc là liên kết dường như không giúp đỡ. Đặt LDFLAGS dường như không có tác dụng ... – jazzbassrob