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

をコンパイルするとき、私は本当に簡単なコードをビルドし、

gcc t.c -g -o t.out 

でそれをコンパイルし、私は確信してのconst変数の値にするためにobjdumpの使用またはNMまたは任意のツールできるグローバルのconst変数の値を見つけます? 私はいつも "こんにちは" 変数のアドレスを見つけることが、誰でもおかげでたくさん

+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 

は(あまりにも多くのビットをダンプしたが、何も費用はかかりませんので... MEH ...)と、それはセクション.rodataであることを意味しhello

0000000000400594 g  O .rodata  0000000000000004    hello 

を検索します。私たちは明示的にobjdumpにすべてのセクションの内容をリストするように依頼したので、ここではそれを値0xdeadbeefとします。

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

そして、なぜそれが見つからないのかは明らかです。