저는 GNU .ld 링커 스크립트를 만들고 있으며 일부 메모리 섹션의 기원을 상징적으로 정의하려고합니다. 다음은 작동하지 않습니다 오류가 읽어 줄을 참조한다GNU .ld 스크립트 원본에 대한 기호 상수 정의
Invoking: Cross ARM C++ Linker
../MKL27Z64xxx4_flash.ld:67: nonconstant expression for origin
collect2: error: ld returned 1 exit status
:
m_interrupts (RX) : ORIGIN = BASE_ADDR, LENGTH = 0x0200
날이 있다는 것입니다 무엇 배플이 다음과 같은 오류가 발생
BASE_ADDR = 0x4000;
MEMORY
{
m_interrupts (RX) : ORIGIN = BASE_ADDR, LENGTH = 0x0200
m_bootloader_config (RX) : ORIGIN = BASE_ADDR + 0x3C0, LENGTH = 0x0040
m_text (RX) : ORIGIN = BASE_ADDR + 0x400, LENGTH = 0x10000 - (BASE_ADDR + 0x400)
m_data (RW) : ORIGIN = 0x1FFFF000, LENGTH = 0x4000
}
을 BASE_ADDR
는 나에게 꽤 상수로 보인다. ld
을 BASE_ADDR
이 상수라고 확신 시키려면 몇 가지 특수 구문이 필요합니까? MEMORY에 대한
에 하드 코딩 된 값을 사용하는 것이 좋습니다 어떤 버전의 이클립스에 따르면 – wds
사용하고, 그것을 사용하고 :.?"를 GNU ARM C/C++ 크로스 컴파일러 \t 2.4. 1.201704251808 \t ilg.gnuarmeclipse.managedbuild.cross.feature.group \t Liviu Ionescu " 어느 특정 버전의 링커를 사용하고 있는지 명확히하지 않습니다. –