Trên máy chủ lưu trữ 64 bit Tôi đang cố gắng xây dựng thư viện được chia sẻ với tùy chọn -m32
. Các thư viện này có thể được liên kết với các thư viện 64 bit thông thường không?Cờ GCC -32:/usr/bin/ld: bỏ qua không tương thích
Tôi đang làm một cái gì đó như thế này:
g++ -m32 -shared source.cpp -l 64_bit_library.so -o 32_bit_library.so
và nhận được thông báo lỗi như thế này:
/usr/bin/ld: skipping incompatible 64_bit_library.so
Vì vậy, câu hỏi của tôi là: làm thế nào 64_bit_library.so
và 32_bit_library.so
nên được biên soạn trên máy chủ 64 bit, để làm cho nó có thể cho 32_bit_library.so
được liên kết với 64_bit_library.so
?
Nếu bạn thực sự cẩn thận, bạn có thể chơi một số trò chơi với typedef, mmap với cờ MAP_32BIT và phân đoạn bộ nhớ chia sẻ nhưng nó là rất nhiều rắc rối! – Flexo
bạn có thể cho biết cách kiểm tra xem nó có tương thích không? sử dụng chính mình có thể? - http://rzr.online.fr/q/gcc – RzR
@rzr - Cách dễ nhất để kiểm tra sẽ chỉ là sử dụng lệnh 'tệp' trên đối tượng được chia sẻ và xem liệu nó có khớp với những gì bạn đang thử không để làm với gcc. Bạn có thể làm việc nó với 'readelf -h' hoặc' objdump -x' cho ví dụ, nhưng tôi thấy đầu ra của 'file' ngắn gọn hơn. – Flexo