专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
DSP
打造windows下的嵌入式开发工具(2):binutils-2.18
2019-07-13 15:04
发布
生成海报
站内文章
/
DSP
9418
0
1059
快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
ADI Blackfin
系列
DSP
优视科技
BV561EVB
开发板
gcc-4.3.1
binutils-2.18
codeblocks-8.02
Skyeye-1.2.5
bfin-uclinux-2008r1-rc8
Cygwin gcc 3.4.4
Visual studio 2005
Visual DSP++ 5.0
欢迎转载,但请保留作者信息
从
2.17
开始,
binutils
支持
Blackfin
,在此选择最新的
2.18
版本,可从
www.gnu.org
下载得到。
binutils
中需要生成的最重要的两个程序是
as.exe
和
ld.exe
,一个是汇编器,一个是链接器。
首先将
binutils-2.18
在
cygwin
下运行
configure –target=bfin-uclinux-gnu
,然后再分析其生成的
Makefile
。通过对此
Makefile
的分析,可以得到
binutils
中几个目标的生成方法。
在下文列出的每一个目标中,都有单独的
config.h
进行配置,当在
vs2005
下编译时,需要手工修改这个文件的内容。
1.1
libiberty.lib
在
cygwin
下编译时要求生成的目标为
libiberty.a
,这是一个静态库,在
vs2005
下相应的改为
libiberty.lib
静态库,它的作用是提供一些
c library
中未提供的辅助函数。其
Makefile
分析参见《
binutils-2.18/libiberty/Makefile
分析
》这篇文章。
在
vs2005
下编译时,需要根据需要修改动态生成的
config.h
文件,根据
vs2005
提供的库函数进行适当修改(其实就是将一些
#define
语句改为
#undef
或者直接注释掉就行了)。然后加入一些
vs2005
下未提供但
libiberty
目录下提供了的函数代码。比如
ffs.c
,
strcasecmp
等等。
编译时未发现有不兼容的代码。
1.2
libbfd.lib
在
cygwin
下编译时要求生成的目标为
libbfd.a
,这是一个静态库,在
vs2005
下相应的改为
libbfd.lib
静态库,它的作用是提供对
elf
格式的文件进行分析或者读写的核心函数。后面的一些应用程序的生成都要依赖于这个库。对这个目标
Makefile
分析参见《
binutils-2.18/bfd/Makefile
分析
》这篇文章。
在
vs2005
下编译时,需要根据需要修改动态生成的
config.h
文件。编译时未发现有不兼容的代码。
1.3
libopcodes.lib
在
cygwin
下编译时要求生成的目标为
libopcodes.a
,这是一个静态库,在
vs2005
下相应的改为
libopcodes.lib
静态库。对这个目标
Makefile
分析参见《
binutils-2.18/opcodes/Makefile
分析
》这篇文章。在
vs2005
下编译时,需要根据需要修改动态生成的
config.h
文件。编译时未发现有不兼容的代码。
1.4
size.exe
这个应用程序用于输出
elf
格式文件中各个段的大小等信息,支持
dxe
文件,其输出的信息类似于这样的:
>size p1.dxe
text
data
bss
dec
hex
filename
14068
0
0
14068
36f4
p1.dxe
这个文件的生成参见《
binutils
中
size.exe
的生成
》,没什么特别的东西。
1.5
objdump.exe
size.exe
只能查看段的大小,而
objdump
可以查看的内容则广泛得多,它可以查看各个段的详细信息,如符号表等等。不过很遗憾它现在仍然不支持
bfin dsp
的反汇编。
这个文件的生成参见《
binutils
中
objdump.exe
的生成
》,没什么特别的东西。
1.6
ar.exe
这个文件用于处理
.a
这样的静态库文件,可以往这个文件中添加或者删除
.o
这样的目标文件。其生成参见《
binutils
中
ar.exe
的生成
》,没有特别的东西。
1.7
strings.exe
这个应用程序将输出一个文件中的所有可打印字符,当然是英文字符。其生成参见《
binutils
中
strings.exe
的生成
》,没有特别的东西。
1.8
ranlib.exe
这个据说可以为库文件中的函数(?)加上序号以加快访问速度,不甚了解。其生成参见《
binutils-2.18/binutils/Makefile
分析
》。
1.9
objcopy.exe
objcopy
的作用是拷贝一个目标文件的内容到另一个目标文件中。其生成参见《
binutils-2.18/binutils/Makefile
分析
》。
1.10
addr2line.exe
addr2line
的作用是可以根据一个地址在
elf
文件中查找其所在的文件和行号,当然前提是这个
elf
文件必须带有调试信息。这个应用程序通常用于调试的时候来追踪发生错误的所在。其生成参见《
binutils-2.18/binutils/Makefile
分析
》。
1.11
readelf.exe
readelf
用来显示
ELF
格式目标文件的信息。可通过参数选项来控制显示哪些特定信息。
(
注意
: readelf
不支持显示
archive
文档
,
也不支持
64
位的
ELF
文件
)
。其生成参见《
binutils-2.18/binutils/Makefile
分析
》。
1.12
nm.exe
nm
用来列出目标文件中的符号,可以帮助程序员定位和分析执行程序和目标文件中的符号信息和它的属性。其生成参见《
binutils-2.18/binutils/Makefile
分析
》。
1.13
strip.exe
strip
命令能清除执行文件中不必要的标示符及调试信息,可减小文件大小而不影响正常使用。文件一旦
strip
后就不能恢复原样。其生成参见《
binutils-2.18/binutils/Makefile
分析
》。
1.14
cxxfilt.exe
cxxfilt.exe
可用来过滤
C++
和
Java
符号,防止重载函数冲突。其生成参见《
binutils-2.18/binutils/Makefile
分析
》。
1.15
as.exe
这个是个汇编器,可以将
.s
文件汇编成
.o
文件。其生成参见《
binutils-2.18/gas/Makefile
分析
》。
1.16
gprof.exe
这个程序可以在一定程度上衡量一个程序的性能。其生成参见《
binutils-2.18/gprof/Makefile
分析
》。
1.17
ld.exe
这个没什么好说的,链接器。参考《
binutils-2.18/ld/Makefile
分析
》。
参考资料
host-i686-pc-cygwin/libiberty/Makefile
解析
(2008-8-19)
host-i686-pc-cygwin/fixincludes/Makefile
分析
(2008-8-19)
host-i686-pc-cygwin/zlib/Makefile
分析
(2008-8-19)
host-i686-pc-cygwin/libcpp/Makefile
分析
(2008-8-19)
host-i686-pc-cygwin/libdecnumber/Makefile
分析
(2008-8-19)
bfin-xxx-gcc
中
cc1plus.exe
的生成
(
2008-08-23
)
bfin-xxx-gcc
中
fortran
目标的生成
(2008-8-24)
bfin-xxx-gcc
中
java
目标的生成
(2008-8-24)
bfin-xxx-gcc
中
objc
目标的生成
(2008-8-26)
bfin-xxx-gcc
中
collect2
目标的生成
(2008-8-26)
打造
windows
下的嵌入式开发工具
(1)
:目标
(2008-9-3)
Ta的文章
更多
>>
打造windows下的嵌入式开发工具(2):binutils-2.18
0 个评论
VC获取环境变量的方法
0 个评论
GOOGLE SDE 电面面经
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮