Соединение файла сценария Компоновщика к исходному коду

Я плохо знаком с компилятором GNU.

У меня есть файл исходного кода C, который содержит некоторые структуры и переменные, в которые я должен поместить определенные переменные в детали местоположения.

Так, я записал файл сценария компоновщика и использовал __ attribute__("SECTION") в объявлении переменной, в исходном коде C.

Я использую компилятор GNU (cygwin) для компиляции исходного кода и создаю .hex использование файла -objcopy опция, но я не добираюсь, как связать мой файл сценария компоновщика при компиляции для перемещения переменных соответственно.

Я присоединяю файл сценария компоновщика и исходный файл C для ссылки.

Помогите мне связать файл сценария компоновщика со своим исходным кодом при создании .hex файла с помощью GNU.

/*linker script file*/
/*defining memory regions*/

      MEMORY
      {
         base_table_ram     : org = 0x00700000, len = 0x00000100  /*base table area for BASE table*/ 
         mem2               : org =0x00800200,  len = 0x00000300 /* other structure variables*/
      }
/*Sections directive definitions*/ 

      SECTIONS
      {
        BASE_TABLE    : { }  > base_table_ram

        GROUP                  :
           {
                   .text        : { } { *(SEG_HEADER)  }
                   .data        : { } { *(SEG_HEADER)  }
                   .bss         : { } { *(SEG_HEADER)  }

           } > mem2

      }

C исходный код:

const UINT8 un8_Offset_1 __attribute__((section("BASE_TABLE")))  = 0x1A; 
const UINT8 un8_Offset_2 __attribute__((section("BASE_TABLE")))  = 0x2A; 
const UINT8 un8_Offset_3 __attribute__((section("BASE_TABLE")))  = 0x3A; 
const UINT8 un8_Offset_4 __attribute__((section("BASE_TABLE")))  = 0x4A; 
const UINT8 un8_Offset_5 __attribute__((section("BASE_TABLE")))  = 0x5A;     
const UINT8 un8_Offset_6 __attribute__((section("SEG_HEADER")))  = 0x6A; 

Мое намерение состоит в том, чтобы поместить, переменные раздела "BASE_TABLE" в адресе определили меня, файл сценария компоновщика и остающиеся переменные в "SEG_HEADER" определили в файле сценария компоновщика выше.

Но после того, как компиляция, когда я заглядываю в .hex файл различные переменные раздела, расположена в различных шестнадцатеричных записях, расположенных в адресе 0x00, не один данный в файле сценария компоновщика.

Помогите мне в соединении файла сценария компоновщика к исходному коду.

Есть ли любые параметры командной строки для соединения файла сценария компоновщика, если кому-либо нравится, предоставляют мне информацию, как использовать опции.

Заранее спасибо,

SureshDN.

5
задан Michael Burr 29 March 2010 в 19:59
поделиться

3 ответа

Попробуйте gcc -Xlinker -T (имя сценария компоновщика) (исходные файлы c)

2
ответ дан 14 December 2019 в 13:32
поделиться

Сначала я компилирую все свои c-файлы в объектные файлы, а затем связываю их с помощью:

gcc -Xlinker -T "xxx.lds" (все объектные файлы)

Из документации gcc:

`-Xlinker OPTION'
    Pass OPTION as an option to the linker.  You can use this to
    supply system-specific linker options which GNU CC does not know
    how to recognize.
2
ответ дан 14 December 2019 в 13:32
поделиться

Спасибо за ответ,

Я нашел еще одну опцию компоновщика в GCC, "ld" и опцию -T, чтобы связать секции с исходным кодом.

ld -T (имя скрипта компоновщика) -o (конечный objfile) (объектный файл исходного файла)

Спасибо. Suresh

2
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: