'컴파일러'에 해당되는 글 2건

  1. 2014.09.15 ubuntu 12.04 에서 gcc-4.7로 갈아타기
  2. 2007.10.20 [Error] ERRONEOUS REFERENCE TO EXTERNAL VARIABLES


현재 사용하고 있는 우분투 리눅스가 12.04 입니다.

아직 쓸만하고 공식적으로 지원도 하고 있는 버전이라, 큰 무리 없이 메인으로 사용하고 있습니다.


오늘 갑자기 gcc로 컴파일을 할려고 하는데 c++11이 지원이 되지 않는 것입니다. 흠...

확인해보니 현재 우분투 12.04에 설치된 gcc version이 4.6 이어서 지원이 되지 않는 것이었습니다.


그래서 일단 해당 버전에서 gcc만 4.7로 업그레이드 하기로 하였습니다.



다음 사이트를 참고하시면 됩니다.

http://www.swiftsoftwaregroup.com/upgrade-gcc-4-7-ubuntu-12-04/


Install

sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-4.7 g++-4.7

Update Alternatives

Add GCC 4.7

sudo update-alternatives --remove gcc /usr/bin/gcc-4.6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6

Make sure GCC 4.7 is the default alternative

sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc)

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-4.7 60 auto mode
1 /usr/bin/gcc-4.6 40 manual mode
2 /usr/bin/gcc-4.7 60 manual mode

Press enter to keep the current choice[*], or type selection number: 0

Verify

$ gcc --version
gcc (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 4.7.3
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


그럼 gcc-4.7에는 어떠한 내용들이 추가되었는지는 다음 사이트를 참고 하시면 됩니다.

https://gcc.gnu.org/gcc-4.7/changes.html


아직 실험단계라고 하는데,,, 다음 사이트도 참고하시기 바랍니다.

https://gcc.gnu.org/gcc-4.7/cxx0x_status.html


저작자 표시 비영리 동일 조건 변경 허락
신고

'Linux' 카테고리의 다른 글

lighttpd 403 forbidden for php files  (0) 2015.04.11
VLC 로 RTSP/RTP Streamming 하기  (0) 2014.12.21
ubuntu 12.04 에서 gcc-4.7로 갈아타기  (0) 2014.09.15
Ubuntu에 Dropbox 설치하기  (0) 2014.06.13
스크린샷 프로그램 (Shutter)  (1) 2014.06.09
EBS 라디오 듣기 주소 변경  (0) 2014.06.06
Posted by sound79 사운드친구

댓글을 달아 주세요

Keil-C 로 컴파일을 하는 도중에 다음과 같은 에러문구가 가득 나오는것이 아닌가?

*** ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ~~~
    MODULE:  ~~~
    ADDRESS: ~~~


구글에 검색을 해본 결과 다음과 같은 이유를 찾아 내었다.

BL51: ERROR 118 (ERRONEOUS REFERENCE TO EXTERNAL VARIABLES)


Information in this support solution applies to:

  • C51 All Versions

QUESTION

The following C file (C:\MYCODE\J1.C)...

/*------------------------------------------------------------/*
extern long Junk;
int junk;

void main (void)
{

for (junk = 0; junk < 100; junk++)
  {
  Junk = 1000L * junk;
  }

}
/*------------------------------------------------------------/*

generates the following error when compiled and linked with the Keil 8051 tools:

*** ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  JUNK
    MODULE:  C:\MYCODE\J1.OBJ (J1)
    ADDRESS: 0020H

What is wrong?

ANSWER

Your program is technically correct. The problem lies in the object module format of the object files created by the Keil C Compiler.

The object files are created according to the OMF-51 object module format specified by Intel. This object module format does not allow lowercase variable names. Therefore, all public variables are treated as uppercase. When you create 2 public symbols with the same name but with different cases, the linker complained about ERRONEOUS EXTERNALS.

Change the name of one of the variables to avoid this problem.


그런데 원래 C는 대소문자를 구별하는 것으로 알고 있는데... OMF-51 포맷 즉 8051 컴파일러에서 전역 변수일 경우 대문자로 시작을 하고 왠만하면 이름을 같은것으로 하지 않는것이 나을거 같다.
OMF-51 object module format specified by Intel의 다운로드는 ==> http://www.keil.com/download/docs/80.asp

신고

'예전글 목록' 카테고리의 다른 글

Middleware for Sensor Network  (0) 2007.10.27
AVR Small Rtos  (0) 2007.10.26
[Error] ERRONEOUS REFERENCE TO EXTERNAL VARIABLES  (0) 2007.10.20
[6lowpan] RFC 4944 now available  (0) 2007.09.26
네이트온 리눅스 설치  (0) 2007.09.22
회사 상사분 결혼식.  (0) 2007.09.01
Posted by sound79 사운드친구

댓글을 달아 주세요