我需要得到可执行文件中的函数对应的虚拟地址信息
7 个解决方案
#1
gcc -ggdb
#2
用readelf命令可以直接察看可执行文件。
readelf -s a.out 查看符号表
readelf -a a.out 查看所有信息
readelf -s a.out 查看符号表
readelf -a a.out 查看所有信息
#3
刚试了一下,不加任何选项,直接gcc test.c
这样生成的a.out用readelf -s也能看到函数的地址。
如果用gcc -g test.c
符号表会多出一些内容
这样生成的a.out用readelf -s也能看到函数的地址。
如果用gcc -g test.c
符号表会多出一些内容
#4
我也用readelf -s查了一下 说是没有符号表
我是这样编译我的可执行文件的
先用gcc -c -g -ggdb 在各个子目录下生成.o文件
然后把很多的.o文件用ld生成一个可执行文件
单独的.o文件可以查看的到符号表
但是最终的那个可执行文件就没有符号表 是不是ld也要设置什么选项之类的?
我是这样编译我的可执行文件的
先用gcc -c -g -ggdb 在各个子目录下生成.o文件
然后把很多的.o文件用ld生成一个可执行文件
单独的.o文件可以查看的到符号表
但是最终的那个可执行文件就没有符号表 是不是ld也要设置什么选项之类的?
#5
不可能一个符号都没有吧?贴一下
# ld -v
# readelf -s t_sym
t_sym是你的可执行文件.
# ld -v
# readelf -s t_sym
t_sym是你的可执行文件.
#6
GNU ld version 2.17.50.0.6-2.el5 20061020
确实没有
我在代码中有用到一些汇编 会不会是因为这个原因呢?
确实没有
我在代码中有用到一些汇编 会不会是因为这个原因呢?
#7
我猜我知道原因了.贴一下你是怎样ld的?
#1
gcc -ggdb
#2
用readelf命令可以直接察看可执行文件。
readelf -s a.out 查看符号表
readelf -a a.out 查看所有信息
readelf -s a.out 查看符号表
readelf -a a.out 查看所有信息
#3
刚试了一下,不加任何选项,直接gcc test.c
这样生成的a.out用readelf -s也能看到函数的地址。
如果用gcc -g test.c
符号表会多出一些内容
这样生成的a.out用readelf -s也能看到函数的地址。
如果用gcc -g test.c
符号表会多出一些内容
#4
我也用readelf -s查了一下 说是没有符号表
我是这样编译我的可执行文件的
先用gcc -c -g -ggdb 在各个子目录下生成.o文件
然后把很多的.o文件用ld生成一个可执行文件
单独的.o文件可以查看的到符号表
但是最终的那个可执行文件就没有符号表 是不是ld也要设置什么选项之类的?
我是这样编译我的可执行文件的
先用gcc -c -g -ggdb 在各个子目录下生成.o文件
然后把很多的.o文件用ld生成一个可执行文件
单独的.o文件可以查看的到符号表
但是最终的那个可执行文件就没有符号表 是不是ld也要设置什么选项之类的?
#5
不可能一个符号都没有吧?贴一下
# ld -v
# readelf -s t_sym
t_sym是你的可执行文件.
# ld -v
# readelf -s t_sym
t_sym是你的可执行文件.
#6
GNU ld version 2.17.50.0.6-2.el5 20061020
确实没有
我在代码中有用到一些汇编 会不会是因为这个原因呢?
确实没有
我在代码中有用到一些汇编 会不会是因为这个原因呢?
#7
我猜我知道原因了.贴一下你是怎样ld的?