'에러'에 해당되는 글 7건

  1. 2010.03.03 커널 컴파일(kernel compile - make install) 에러
  2. 2010.03.03 make menuconfig 에러
  3. 2009.07.16 GetLastError()
  4. 2009.02.05 프로그램 실행 에러 - MFC71D.DLL을(를) 찾을 수 없으므로... 5
  5. 2008.07.09 vista에 XPe 설치
  6. 2008.06.04 Platform Builder 5.0 Emulator:x86 에러..
  7. 2007.11.05 Windows Embedded CE 6.0의 OSDesign에서 Platform manager를 추가하지 말라!
2010. 3. 3. 01:02

커널 컴파일(kernel compile - make install) 에러



2.6.4 커널을 가지고 "make install" 명령을 입력하면 쭈욱 쭈욱 컴파일을 해나간다.
컴파일을 시작한지 얼마 되지도 않았는데..
아래와 같은 에러 메시지가 출력됐다... -_-;
# make install
...
  CC      arch/i386/kernel/process.o
{standard input}: Assembler messages:
{standard input}:104: Error: suffix or operands invalid for `mov'
{standard input}:105: Error: suffix or operands invalid for `mov'
{standard input}:765: Error: suffix or operands invalid for `mov'
{standard input}:766: Error: suffix or operands invalid for `mov'
{standard input}:982: Error: suffix or operands invalid for `mov'
{standard input}:983: Error: suffix or operands invalid for `mov'
{standard input}:1072: Error: suffix or operands invalid for `mov'
{standard input}:1073: Error: suffix or operands invalid for `mov'
{standard input}:1151: Error: suffix or operands invalid for `mov'
{standard input}:1163: Error: suffix or operands invalid for `mov'
make[1]: *** [arch/i386/kernel/process.o] 오류 1
make: *** [arch/i386/kernel] 오류 2

이 에러에 대한 해결책은 아래 링크를 참조하면 될 듯 하다.
http://www.linuxquestions.org/questions/linux-from-scratch-13/problem-while-make-kernel-343910/
# wget http://www.kernel.org/pub/linux/devel/binutils/linux-2.6-seg-5.patch
# patch -Np1 -i linux-2.6-seg-5.patch

패치 후 "make install"을 하면 정상적인 컴파일이 이루어지고, "arch/i386/boot/bzImage"를 얻을 수 있다.

구 버전의 커널에서 일어나는 현상인듯 한데.. 정확한건 잘 모른다.
kldp.org(http://kldp.org/node/74510) 에서는, 2.6.18 버전 커널의 경우 커널 컴파일이 에러 없이 동작하는데.. 2.6.9 버전 커널의 경우에는 동일한 에러가 발생한다고 한다.
답변은.. "구버전커널이시군요. 신버전커널 받아서 해보시죠" 이다. -_-;;



'Linux > Kernel' 카테고리의 다른 글

make menuconfig 에러  (0) 2010.03.03
LXR(Linux Cross-Reference)  (0) 2009.08.28
2010. 3. 3. 00:12

make menuconfig 에러



2.6.4 버전의 커널에서 "make menuconfig" 하는 도중 아래와 같은 에러 발생.. -_-;
...
HOSTCC  scripts/kconfig/mconf.o
scripts/kconfig/mconf.c:91: error: static declaration of ‘current_menu’ follows non-static declaration
scripts/kconfig/lkc.h:63: error: previous declaration of ‘current_menu’ was here
make[1]: *** [scripts/kconfig/mconf.o] 오류 1
make: *** [menuconfig] 오류 2

4.x 버전대의 gcc로 컴파일을 하면 에러가 발생하는 모양이다.
해결책은 3.x 버전의 gcc로 갈아탄 후 컴파일을 하는 것이다.
본인의 경우 3.4.6 버전의 gcc를 사용해 make menuconfig를 실행한 결과 위와 같은 에러메시지는 보이지 않고 정상적으로 동작을 했다.

다른 방법으로는 "scripts/kconfig/mconf.c" 파일의 91번째 라인에서 "static" 키워드를 제거하면 된다.
...
//static struct menu *current_menu;
struct menu *current_menu;
...


'Linux > Kernel' 카테고리의 다른 글

커널 컴파일(kernel compile - make install) 에러  (0) 2010.03.03
LXR(Linux Cross-Reference)  (0) 2009.08.28
2009. 7. 16. 10:00

GetLastError()



Windows 시스템에서 함수를 사용할 때 이녀석이 제대로 실행되지 않고 에러를 발생시킬 경우가 허다하다.
사실.. 프로그램을 짜면서 에러 하나 없이 순탄하게 짜는 사람이 있을까마는..
적어도 난 한번도 없다면서.. -_-;

그럼 에러가 발생했다 라는것 말고 무슨 이유로 에러가 발생했다는 것을 아는 방법이 없을까?
수정을 하려 해도 어떤 이유에서 에러가 발생하는 지 알아야 수정을 할것인데...
그래서 나온 것이 바로 GetLastError() 라는 함수이다. GetLastError()를 에러가 발생하는 함수 바로 뒤에 호출하게 되면 오류의 원인에 대한 에러코드를 얻을 수가 있다.

DWORD GetLastError(void);

MSDN을 보게 되면 수많은 에러코드의 의미가 나와있다.
오호라.. MSDN을 보니 대충 0 ~ 15999가지의 에러에 대한 내용이 있는 모양이다. 열라 많다 -_-;;

간단하게 사용법을 보면은..
...
HANDLE hFile = CreateFile(...);
if(hFile == INVALID_HANDLE_VALUE)
{
    printf("Error Code : %d \n", GetLastError());
}
...

위와 같이 사용을 하게 될 경우, CreateFile()의 결과가 잘못될 경우, if문의 GetLastError()의 반환값을 보구선 어떤 이유로 원치 않는 결과가 나왔는지를 확인 할 수가 있다.


'Programmings > Windows Programming' 카테고리의 다른 글

DLL에서 WndProc 메시지 처리하는 방법  (0) 2010.02.11
아스키코드(ASCII CODE)와 유티코드(UNICODE)  (0) 2009.10.09
WinIO  (0) 2009.06.23
IME 입력모드 설정  (5) 2009.05.29
레지스트리(Registry)  (0) 2009.05.29
2009. 2. 5. 10:14

프로그램 실행 에러 - MFC71D.DLL을(를) 찾을 수 없으므로...



프로그램을 실행하다보면 간혹 다음과 같은 에러 메시지를 볼 때가 있다.
"MFC71D.DLL을(를) 찾을 수 없으므로 응용 프로그램을 시작하지 못했습니다. 이문제를 해결하려면 응용 프로그램을 다시 설치하십시오.

이는 MFC로 작성된 프로그램을 실행 시킬 때 필요로 하는 MFC71D.DLL이라는 파일이 없어서 발생하는 문제이다.이 때는 단순히 MFC71D.DLL 이라는 파일을 구해서 실행하는 파일이 있는 폴더 혹은 WINDOWS(C:\WINDOWS)폴더 혹은 System(C:\WINDOWS\System32)폴더에 복사한 후 해당 프로그램을 실행하면 된다.

위와 같이 다양한 경로에 MFC71D.DLL 파일을 넣어도 정상적으로 동작하는 이유는 해당 프로그램이 실행될 때 연관된 파일을 찾는 순서가 정해져 있어서 여기 저기 필요한 곳을 뒤져 필요한 파일을 찾아서 실행하기 때문이다.
  1. 프로그램의 실행파일이 존재하는 디렉토리
  2. Windows System(C:\WINDOWS\System32) 디렉토리
  3. Windows(C:\WINDOWS) 디렉토리
  4. 환경변수 PATH에 의해 지정된 디렉토리
MFC71D.DLL 파일을 넣은 뒤 응용 프로그램을 다시 실행하면 한번 더 에러 메시지를 볼 수 있다.
"MSVCR71D.DLL을(를) 찾을 수 없으므로 응용 프로그램을 시작하지 못했습니다. 이 문제를 해결하려면 응용 프로그램을 다시 설치하십시오."

이녀석도 마찬가지로 MSVCR71D.DLL을 MFC71D.DLL과 같은 방식으로 해주면 해결을 할 수가 있다.

이렇게 하고 다시 프로그램을 실행시키면 정상적으로 프로그램이 실행되는 것을 확인할 수 있을 것이다.

2008. 7. 9. 13:43

vista에 XPe 설치



이전에 개발 PC에 XPe를 설치하는 방법에 대해서 알아보았다. 설치를 마친 뒤 다른 작업들 때문에 정작 실행은 한번도 하지 않았었다. 우왕~ 바쁘기도 하시지... -_-

짬을 내어 XPe Target Designer를 실행시켜 보았는데 정상적인 동작을 하지 않았다....
특별한 에러 없이 설치가 완료되어 정상적으로 설치가 되었다고 생각했었는데.. 그게 아닌 모양이다.

Target Designer를 실행하면 'Target Designer connot connect to the component database at XXX'라는 에러 메시지가 보인다.. ㅜㅜ
XPe의 Database 설치 시 호환성이 없다는 메시지가 뜨길래 무시하고 진행하긴 했는데.. 이 부분이 문제였나부다.
사용자 삽입 이미지
Target Designer 실행 시 에러 메시지창

일단 구글 검색을 통해 해결 책을 찾은 듯 하여 포스팅.. ^^

XP 버전의 개발 PC에서는 XPe가 사용하는 MSDE(MS Database Engine)라는 database engine을 사용한다. 하지만, vista로 넘어오면서 이녀석(MSDE)은 더이상 사용하지 않는다고 한다. 그래서 vista에서 database를 사용할 수 있도록 'SQL Server 2005 Express Edition'을 설치해 주어야 한다.

SQL Server 2005를 사용해본적이 없어서... 세팅 중에 몇가지 문제가 있긴 했지만.. ㅋ
참고로.. 'SQL Server 2005 Surface Area Configuration'에서 '새 관리자'를 추가해 주어야 Database connection을 정상적으로 할 수 있는 듯 하다. 이부분을 진행하지 않으니.. 이전과 동일하게 에러 메시지를 보았던 기억이.. ㅋ

이에 관련된 문서를 일단 올린다.
이 문서 파일은 vista에 XPe를 설치할 때 보일 수 있는 몇가지 해결책(?)같은것을 설명해 놓은 문서이다.



2008. 6. 4. 21:20

Platform Builder 5.0 Emulator:x86 에러..



간만에 Windows CE 5.0으로 할 일이 생겨서 기존의 Windows Embedded CE 6.0을 제거했다.
대략 Platform Builder의 버그 정도로.. Windows Embedded CE 6.0을 깐 상태에서는 Windows CE 5.0이 제대로 깔리지 않으니깐... 지우고 새로 까는 그런 노가다를.. -_-

뭐.. 여튼 꽤 시간을 들여 CE 6.0을 제거하고, CE 5.0을 깔고 간단한 테스트로 Emulator로 빌드..

그리고 타겟에 연결을 하려고, Connectivity setting에들어가려하니.. 첨 보는 듯한 에러메시지가 뜨는게 아닌가...-_-

사용자 삽입 이미지

아.. 뭐지?? 하고 여기 저기 검색해보니..

세상에.. Windows Embedded CE 6.0이 제대로 제거되지 않아 생기는 현상이란다.. 제길.. 그렇게 시간을 들여서 그짓을 했건만..
그간 했던 그짓거리가 뻘짓이었다니.. ㅡ.ㅜ

해결책은 더 압권이었다...
대략 PC를 포맷하고 다시 설치하라는...

헐.. 완전 멋지지 않은가??
이게 CE의 세상이다!!! ㅋㅋ


2007. 11. 5. 20:21

Windows Embedded CE 6.0의 OSDesign에서 Platform manager를 추가하지 말라!



OSDesing이란 CE OS를 만들 때 필요한 기능을 추가할 것인지 말것인지를 정하고 실제 추가 삭제를 하는 작업을 말한다.

Windows Embedded CE 6.0의 OSDesign 작업을 할 때에 주의할 점이있다.
Platform manager이라는 컴포넌트를 OSDesign에 추가하지 말라는 것이다.

만일 이를 추가할 시에는 빌드를 하여 이미지를 생성하려 하면 다음과 같은 에러를 발생시킨다.

사용자 삽입 이미지

아래는 본인경우에서의 에러메시지이다.

Error: Could not find file 'C:\WINCE600\OSDesigns\emdk4000_cam_6\
emdk4000_cam_6\RelDir\EMDK4000_ARMV4I_Release\cemgrc.exe'
on disk cemgrc.exe C:\WINCE600\OSDesigns\emdk4000_cam_6\emdk4000_cam_6\RelDir\
EMDK4000_ARMV4I_Release\cemgrc.exe NK

C:\WINCE600\PUBLIC\COMMON\CESYSGEN\makefile 파일의 1187라인을 살펴보면, Platman Stuff라는 녀석을 타겟쪽으로 복사를 하는 작업을 하게 되는데... 이 'Platman Stuff'라는 녀석은 CE 6.0을 인스톨할 때부터 존재하지 않는 녀석이라고 한다. 그래서 이 파일은 복사될 수도 없고, 빌드 시 에러를 발생시킨다고 한다.

자세한 내용은 여기를 참조하면 될 듯 하다.

주저리 주저리 내용은 많지만 중요한 점은 그냥 OSDesign시에 체크를 하지 말라는 내용이다.