我正在对主机-加速器系统的主机端进行编程。主机运行在Ubuntu Linux操作系统下的PC机上,通过USB接口与嵌入式硬件通信。通过将存储器块复制到嵌入式硬件的存储器和从嵌入式硬件的存储器复制存储器块来执行通信。
在电路板的内存上有一个存储区,我将其用作邮箱,在那里我可以写入和读取数据。邮箱被定义为一个结构,我使用相同的定义在我的主机空间中分配镜像邮箱。
我在过去成功地使用了这项技术,因此现在我将宿主Eclipse项目复制到当前项目的工作区,并进行了适当的名称更改。奇怪的是,在构建宿主项目时,我现在收到以下消息:
构建目标:fft2d_host
调用:GCC C链接器
GCC-L/opt/Adapteva/esdk/Tools/host/x86_64/lib-o“fft2d_host”./src/fft2d_host.o-le_host-lrt
./src/fft2d_host.o:在函数`main‘中:
fft2d_host.c:(.text+0x280):针对./src/fft2d_host.o中Common部分中定义的符号‘Mailbox’,重定位已截断以适合:R_X86_64_PC32
这个错误意味着什么?为什么它不能在当前项目上构建,而可以在旧项目上构建?
1条答案
按热度按时间wqsoz72f1#
您正在尝试以这样一种方式链接您的项目,即相对寻址方案的目标比所选相对寻址模式的32位移位所支持的目标更远。这可能是因为当前项目更大,因为它以不同的顺序链接对象文件,或者因为有一个不必要的扩展Map方案在发挥作用。
这个问题是一个很好的例子,说明了为什么对错误消息的一般部分进行网络搜索通常是有效率的--你会发现如下所示:
http://www.technovelty.org/code/c/relocation-truncated.html
它提供了一些治疗建议。