Tôi đang lập trình phía máy chủ của một hệ thống máy gia tốc. Máy chủ chạy trên PC dưới Ubuntu Linux và giao tiếp với phần cứng được nhúng thông qua kết nối USB. Giao tiếp được thực hiện bằng cách sao chép các khối bộ nhớ đến và từ bộ nhớ của phần cứng được nhúng.Lỗi GCC này "... di dời cắt ngắn để phù hợp ..." có nghĩa là gì?
Trên bộ nhớ của bảng, có vùng bộ nhớ mà tôi sử dụng làm hộp thư nơi tôi viết và đọc dữ liệu. Hộp thư được định nghĩa là một cấu trúc và tôi sử dụng cùng một định nghĩa để cấp phát một hộp thư gương trong không gian lưu trữ của tôi.
Tôi đã sử dụng kỹ thuật này thành công trong quá khứ vì vậy bây giờ tôi đã sao chép dự án Eclipse máy chủ vào không gian làm việc của dự án hiện tại của tôi và thực hiện các thay đổi tên thích hợp. Điều kỳ lạ là khi xây dựng các dự án chủ bây giờ tôi nhận được thông báo sau:
Xây dựng mục tiêu: fft2d_host
Gọi: GCC C Linker
gcc -L/opt/adapteva/esdk/tools/host/x86_64/lib -o "fft2d_host" ./src/fft2d_host.o -le_host -lrt./src/fft2d_host.o: Trong chức năng 'chính.
fft2d_host.c :(văn bản + 0x280): di chuyển cắt ngắn để vừa với: R_X86_64_PC32 dựa vào ký hiệu 'Hộp thư' được định nghĩa trong phần COMMON trong ./src/fft2d_host.o
Lỗi này có ý nghĩa gì và tại sao nó không được xây dựng trên dự án hiện tại, trong khi nó phù hợp với dự án cũ hơn?
Đây là một gợi ý: Bạn có thể vô tình xây dựng (các) đối tượng 64 bit mà không có '-fPIC'. Điều đó đã vấp ngã tôi một lúc. –