My Own Style

반응형
  • 에러 내용
    - 리눅스 상에서 소스코드를 컴파일하다 보면 다음과 같은 오류가 종종 발생합니다. 
    • src/include/test_defs.h:1: error: stray '\357' in program src/include/test_defs.h:1: error: stray '\273' in program src/include/test_defs.h:1: error: stray '\277' in program

        • 위와 같은 오류가 발생하였을 때, 같은 개발서버를 두는 경우, "A" PC 에서는 컴파일이 되는데 "B"PC 에서는 컴파일이 되지 않거나 해서 문제의 원인을 못찾는 경우가 생깁니다.

    • 실직적인 문제 원인 분석
      • 명령어 입력 : $ file [문제 발생 파일명] 
        ex)
        file src/include/test_defs.h

      • 결과 : UTF-8 Unicode (with BOM) C program text

      • GCC 컴파일러는  기본적으로 UTF-8 을 INPUT 파일로 인코딩을 하게 되는데 해당 파일에 Byte Order Mark(BOM) 문자가 삽입되어 있을 경우,  알수없는 문자라고 판단하여 에러가 발생하게 됩니다.

      • 보통 윈도우에서 파일을 수정한 내용을 리눅스로 옮겨오게 될 경우, 해당 문제가 발생하는 경우가 많으며 여러 머지툴의 인코딩 타입들의 설정에 의해 발생하는 경우가 경험적으로 보았을 때, 많은 것 같습니다.

    • 해결 방법
      • 컴파일러의 인코딩 방식을 변경한다. (컴파일 옵션)
        • -finput-charset=CHARSET 

      • vim 에디터를 사용하는 유저인 경우, BOM 을 무시하도록 설정한다.
        • :e set nobomb 명령어로 파일을 세팅 후, 컴파일을 진행



반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band