我正在开发 Ubuntu 14.04 LTS。
我有一个exec
从file.c
. 使用file.c
静态库中的函数。例如,假设它fubar()
是file.c
. 这是我注意到的。
nm exec | grep fubar
给出一定的值。
(在我的系统和我的可执行文件上,0808377f
)gdb ./exec
然后break fubar
给出不同的值。
(在我的系统和我的可执行文件上,0x8083785
)
exec1
当我对另一个可执行文件(编译自file1.c
,它为两个命令输出相同的值)做类似的事情时。
这两个命令都应该输出相同的虚拟地址。不是吗?我显然错过了一些东西。有人可以解释到底发生了什么吗?这两个命令有什么区别。