2016-11-08 66 views
0
const int hello= 0x1111; 
int main(){ 
} 

我建立一个非常简单的代码时发现全局常量变量的值,并与在C,编译

gcc t.c -g -o t.out 

我可以使用objdump的或纳米或任何工具以确保常数变量值编译? 我总是觉得可变的 “你好” 的地址,却找不到值

任何人都可以帮助我,非常感谢

+0

我不明白你在问什么。 –

+0

显示输出 –

回答

1

的示例代码

const int hello = 0xdeadbeef; 
int main() 
{ 
    return 0; 
} 

编译

gcc-4.9 -W -Wall -Wextra -pedantic -std=c11 fortests.c -o fortests 

转储内容

objdump -xDSs fortests | less 

(甩有点过分,但不用花一分钱,所以......咩......)和搜索hello

0000000000400594 g  O .rodata  0000000000000004    hello 

这意味着它是在部分.rodata。我们明确要求objdump列出所有部分的内容,所以我们在这里列出了值0xdeadbeef

Contents of section .rodata: 
    400590 01000200 efbeadde     ........ 
        ^^^^^^^^ 
      here |||||||| 

而现在应该清楚,为什么你很难找到它。