2014-09-04 2 views
1

.S 프로그램에서 .c 파일에 정의 된 변수를 사용하려고합니다. 이 .c 파일에서uclibc-gcc에서 어셈블리 지시문 .extern 사용

: 그것은 컴파일 할 수 있습니다

.extern var 
LDR lr, _VAR 
_VAR: .word var 

: .S 파일에있는 동안

const int var = 10; 

. 그러나 실행시 오류 메시지 "응용 프로그램의 텍스트 섹션을 수정할 수 없으며 위치 독립적 실행 파일에 GCC 옵션 -fPIE를 사용하십시오."

크로스 컴파일 도구는 arm-v7-linux-uclibceabi-gcc입니다. 그리고 타겟은 ARM cortex R4입니다.

이렇게 ".extern"을 사용할 수 없습니까?

감사합니다. Simmis.

+0

어떤 칩을 사용하고 있습니까? 어떤 마이크로 프로세서? MIPS? 팔 ? PIC? 프리 스케일? 아트멜? –

+0

ARM 피질 R4. ST 칩셋. – Simmis

+0

메시지 본문에 세부 정보를 포함 시키도록 강력히 제안하십시오. 또한 그것에 대한 태그도 추가하십시오. 지금 당신은 "Assembly"와 "Extern"이라는 태그를 가지고 있습니다. 나는 또한 당신이 ARM과 대뇌 피질을 추가하는 것이 좋습니다 –

답변

0

해당 변수에 쓰려고합니까? 어셈블리에서 아마도? 그것은 읽기 전용 데이터이며 아마도 링커 스크립트가 텍스트 섹션에 넣었습니다. 그래서 당신은 그것에 쓸 수 없습니다.

+0

번호 그냥 ldr를 사용하여 var를 가져올 수 있습니다. – Simmis

관련 문제