linux – 链接器删除传递给它的目标文件上的字符?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 链接器删除传递给它的目标文件上的字符?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1914字,纯文字阅读大概需要3分钟。
内容图文
![linux – 链接器删除传递给它的目标文件上的字符?](/upload/InfoBanner/zyjiaocheng/965/575d8ee5dbe84d5f8c68cb50a2651c26.jpg)
我似乎在Windows机器上使用ARM-Linux交叉编译遇到了一个奇怪的异常现象.我正在使用从Mentor Graphic网站获得的Sourcery CodeBench Lite Edition(arm-none-linux-gnueabi-gcc).
http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/
以前,我使用arm-linux编译器在Ubuntu机器上构建了我的代码(sudo apt-get install g -arm-linux-gnueabi -y || gcc-arm-linux-gnueabi).这里的工具工作正常,我可以构建目标文件并将它们链接在一起没问题.
问题是当我在Windows中进行ARM-Linux交叉编译时..更具体地说,是链接阶段.这是我的make文件中的链接器命令
%.elf: $(OBJ_C_OMAP)
@echo "linking to make ELF"
@echo $(OBJ_C_OMAP)
@echo "-------------------------------"
$(CC) $(CFLAGS) $(OBJ_C_OMAP) --output $@ $(LDFLAGS)
OBJ_C_OMAP包含所有目标文件及其完整路径的列表,CFLAGS是一堆编译器标志,LDFLAGS是一个链接器标志.当它到达这一点时,链接器会通过并最终抛出一个错误:
<full_path_to_an_object_file>: No such file or directory
检查< full_path_to_an_object_file>时似乎缺少一个角色.如果我将此字符串与@echo $(OBJ_C_OMAP)给出的字符串进行比较,则存在不匹配,$(OBJ_C_OMAP)变量包含正确的路径,但无论出于何种原因,链接器都是错误的.作为发生的事情的一个例子:
/ad2_ra/ap/modules/gps/gps_ubx_ucenter.o:没有这样的文件或目录
当$(OBJ_C_OMAP)中指定的目录显示时
/ad2_raw/ap/modules/gps/gps_ubx_ucenter.o
在此示例中,缺少“w”字符.
除了这种奇怪的行为,如果我从列表中删除此对象文件,问题仍然存在于另一个.o文件(从路径中删除另一个char).就好像我可以传入多少个obj文件有一些限制,一旦它到达某个obj文件传入它就开始从路径中删除字符并输出错误.
这可能是这个编译器的Lite版本中的一个错误或者可能是一些限制(我正在使用它).另请注意,我链接了相当多的“少数”对象(约66个文件),我不确定在为此编译器链接这么多时是否需要特别注意.
援助表示赞赏,谢谢
解决方法:
我四处搜索,发现一个非常类似的问题报告给Atmel与avr-gcc:
http://asf.atmel.com/bugzilla/show_bug.cgi?id=1965
问题似乎是Windows每个命令行只能接受8191个字符.您的链接步骤命令行是否超过该限制? (http://support.microsoft.com/kb/830473)
内容总结
以上是互联网集市为您收集整理的linux – 链接器删除传递给它的目标文件上的字符?全部内容,希望文章能够帮你解决linux – 链接器删除传递给它的目标文件上的字符?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。