, 우리는 컴파일 할 때, 예를 들어 아래의 코드 조각 :Windows gcc (cygwin)가 ELF 헤더를 쓰지 않는 이유는 무엇입니까? 리눅스 머신에서
b.cc : 명령과
typedef struct sTeste {
int campo1;
char campo2;
int campo3;
} T_TESTE;
void m1(T_TESTE *p) {
}
:
GCC -gdwarf-2 파라메터 - C b.cc -o 보
우리는 ELF 헤더를 얻을
[email protected]:~# hd b.o |head 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| 00000010 01 00 3e 00 01 00 00 00 00 00 00 00 00 00 00 00 |..>.............| 00000020 00 00 00 00 00 00 00 00 a8 03 00 00 00 00 00 00 |................| 00000030 00 00 00 00 40 00 00 00 00 00 40 00 14 00 11 00 |[email protected]@.....| 00000040 55 48 89 e5 48 89 7d f8 5d c3 00 00 b1 00 00 00 |UH..H.}.].......| 00000050 02 00 00 00 00 00 08 01 00 00 00 00 04 00 00 00 |................| 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000070 00 00 00 00 00 00 00 00 00 02 00 00 00 00 0c 01 |................| 00000080 01 64 00 00 00 03 00 00 00 00 01 02 64 00 00 00 |.d..........d...| 00000090 02 23 00 03 00 00 00 00 01 03 6b 00 00 00 02 23 |.#........k....#|
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |. ELF ............ | 우리는 Windows에서 동일한 작업을 수행 할 때
그러나, 결과는 다음과 같습니다
C:\Aleks-IOT\Code\Dev\JAVA\nbdwarfdumplib>xxd b.o |head 00000000: 6486 0d00 0000 0000 ae05 0000 1c00 0000 d............... 00000010: 0000 0400 2e74 6578 7400 0000 0000 0000 .....text....... 00000020: 0000 0000 1000 0000 1c02 0000 0000 0000 ................ 00000030: 0000 0000 0000 0000 2000 5060 2e64 6174 ........ .P`.dat 00000040: 6100 0000 0000 0000 0000 0000 0000 0000 a...............
내 진짜 문제는 내가이 만 간단한 컴파일 단위 (b.cc에서 난쟁이 디버그 데이터를 추출하고자하는 것입니다 케이스).
실마리가 있습니까?
감사
Windows 10 64 비트가 있습니까? [Windows 우분투] (https://msdn.microsoft.com/en-us/commandline/wsl/install_guide)를 사용하면 Windows cmd 또는 powershell 창에서 ELF 바이너리를 빌드하고 실행할 수 있습니다. 미리보기 품질입니다. BSOD를'apt-get'을 사용해서 얻었습니다. –
시도해 보겠습니다. –