컴퓨터공부 362

objdump - 리눅스는 어떻게 내가 만든 main()을 실행하나?

질문은 간단하다. 리눅스는 어떻게 내가 만든 main()을 실행하나? 이 글은 아래 간단한 C 프로그램을 예로 삼아 설명한다. 이를 "simple.c"라 하자.main() { return(0); } 컴파일 gcc -o simple simple.c 실행파일에는 무엇이 들어있나? 실행파일에 무엇이 있는지 보기위해 "objdump" 도구를 사용하자. objdump -f simple simple: file format elf32-i386 architecture: i386, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x080482d0 출력은 실행파일에 대한 귀중한 정보를 알려준다. 먼저 파일은 "ELF32" 형식이다. 둘째로 시작주소가 "0x08048..

스트림을 읽어 들여서 보자..

#include #include int main() { void *buf; FILE *infp = fopen("ezboot.x5", "rt"); FILE *outfp = fopen("out_ezboot.x5", "w+"); buf = malloc(4*4); // 32bits fread(buf, 1, 4, infp); fwrite(buf, 1, 4, outfp); printf("%x", *(int*)buf); } 뭐.. 별거 없는 코드이다.. 끝에 void 형인 buf를 캐스팅 연산을 이용하여 출력할 수 있게 해준다는 것을 빼먹지 말자.. printf에서는 void형은 출력못하니 int * 로 형변환을 한 다음에 안에 있는 데이터를 출력한다.

Makefile 만들기

1. 개요 이번 강의는 이지보드에 디바이스 드라이버를 만들기 위하여 사용되는 전형적인 Makefile의 구성에 대하여 기술한 강의입니다. 2. i386용 Makefile 이 메이크 화일은 맨처음 오렐리의 소스에서 받아서 고쳐 버린 것입니다. 실제 실전에 사용하다보니 이렇게 바뀌어 버렸습니다. 본 강사가 사용하는 전형적인 모듈 컴파일용 Makefile의 내용을 보기로 합시다. [ Makefile ] 1 2 CC = gcc 3 CXX = g++ 4 AR = ar 5 LD = ld 6 NM = nm 7 STRIP = strip 8 OBJCOPY = objcopy 9 10 CP = cp 11 MV = mv 12 13 KERNELDIR = /usr/src/linux 14 INCLUDEDIR = -I$(KERNEL..

vi에서 파일을 hex로 보기, hex editor

이거 몰라서.. 한참 헤맸다...ㅡㅡ; 제 목 : hex editor 와 vi 작성자 : 좋은진호(truefeel, http://coffeenix.net/ ) 작성일 : 2006.2.17(금) 1. vi에서 hex 편집을 vi에서 hex editor 기능을 이용해서 바이너리 파일을 편집하는 방법이다. ESC키를 누른 후(명령 모드로 전환) :%!xxd 를 하면 hex editor 환경으로 전환되며, Hex 또는 AscII 편집을 모두 할 수 있다. 저장을 하기 위해서는 반드시 일반 편집 환경으로 전환한 후 해야 한다. :%!xxd -r :wq! 2. 그외 vi에서 편집 후 저장시 용량차이가 약간 생기는 경우도 있었으며, 이럴 경우에는 심플한 hex edtior인 heme ( http://heme.sour..

우분투에서 듀얼헤드(듀얼모니터), i915 Driver Install(i810 그래픽 드라이버, i810 graphic driver)

리눅스의 듀얼모니터하기 정말 힘들다.. 까무러치겠다..!! 몇박 며칠을 했는지 모르겠다.. 하지만 되어서 기분이 좋네..음하하하하 우분투 메뉴얼 보고 똑같이(정말 그대로) 보고 확장 모니터를 CRT에서 LCD로만 바꿔주었다. 처음에 해상도를 노트북은 "1024x768" 로 하고 확장 모니터는 "1280x1024" 로 했는데, 노트북은 되는데 확장 모니터에 화면이 안 들어왔다. 그래서 둘 다 "1280x1024" 로 바꿔주니 확장 모니터의 화면은 "1280x1024"로 바뀌고 노트북의 화면은 "1024x768" 로 되었다. (아마도 노트북은 "1024x768" 이상을 지원하지 못하니 그냥 "1024x768"로 보이는 것 같다) --------------------------------------------..

누산기(accumulator)

요즘엔 하드웨어의 뜻이 무엇인지 찾으러 다니는것도 일인것 같네.. ===================================================================================== 중앙 처리 장치(CPU) 내에 들어 있는 레지스터의 하나. 연산 결과를 일시적으로 저장하는 메모리 기능 이외에 누산기의 내용과 결정된 수치와의 대수 차를 계산하기도 하며 논리 연산을 할 수도 있다. 또 기억된 수치의 자릿수 전달이나 보수(補數) 등의 조작도 하는 중요한 레지스터이다. 혹은 원래 누산기는 가산회로(加算回路)를 가진 레지스터[register:저수장치(貯數裝置)]에 대해 주어진 명칭이다. 일반적으로는 여러 가지 기능을 가진 레지스터와 가산기나 배수회로(倍數回路)가 접속되어 최종..

컴퓨터공부 2007.05.01

GCC 3.4 / GCC 3.3 / GCC 2.95 크로스컴파일러 설치방법

아래의 다섯개를 깔아야 한다.. 1) binutils : 어셈블러 및 로더 기타 툴 ( GNU ) 2) glibc : 크로스 컴파일 구축을 위한 라이브러리 및 일반 라이브러리 3) gcc : 컴파일러 4) 커널 : 커널 쏘스 5) gdb : 디버거 ========================================================================================================= 크로스컴파일러 GCC 3.4 구축방법 1. 개요. 이 문서는 ARM 용 크로스 컴파일 환경을 구축하기 위한 방법의 하나로 GNU에서 제공하는 소스 패케지를 이용하여 구성하는 방식에 대하여 기술한 문서입니다. 커널 2.6 이상을 컴파일 하기 위해선 gcc3.3 이상의 버전을 ..