arm-elf-tools-20030314.sh 和 arm-elf-tools-20040427.sh

这两个版本的工具链都有些问题 :(

arm-elf-tools-20030314.sh的sprintf函数存在缺陷。
如下语句:

     sprintf(buf, "一共 %d 个!", ch);

最终buf中的内容为“Invalid multibye”。 

arm-elf-tools-20040427.sh的pthread库有问题。
链接使用pthread库的程序时出错:

pthread_test.elf2flt(.text+0x5ffc): In function `__pthread_perform_cleanup':
: undefined reference to `__rpc_thread_destroy'
collect2: ld returned 1 exit status
make[2]: *** [pthread_test] 错误 1
make[2]: Leaving directory `/home/uClinux/user/pthread_test'
make[1]: *** [all] 错误 2
make[1]: Leaving directory `/home/uClinux/user'
make: *** [subdirs] 错误 1

比较了一下pthread库中__pthread_perform_cleanup部分:
20030314版本:

00000608 g     F .text  000000a8 __pthread_perform_cleanup
00000000         *UND*  00000000 __pthread_provide_wrappers

20040427版本:

00000608 g     F .text  000000bc __pthread_perform_cleanup
00000000         *UND*  00000000 __rpc_thread_destroy
00000000         *UND*  00000000 __pthread_provide_wrappers

而符号__rpc_thread_destroy在库中无法找到,所以编译时出错。 

解决方法:
运行 ./arm-elf-tools-20040427.sh 安装20040427版本的工具链,然后将20030314版本的libpthread.a替换/usr/local/arm-elf/lib/libpthread.a。

— EOF —

《arm-elf-tools-20030314.sh 和 arm-elf-tools-20040427.sh》有6个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注