链接器脚本中断程序

时间:2018-06-05 17:44:57

标签: c++ linker-scripts

我有一个程序,使用__attribute__ ((".sdh_ble_observers"))extern mytype * ___start_sdh_ble_observers将一些结构放在命名部分中。

我正在使用以下链接描述文件

SECTIONS
{
  .sdh_ble_observers :
  {
    PROVIDE(___start_sdh_ble_observers = .);
    KEEP(*(SORT(.sdh_ble_observers*)))
    PROVIDE(___stop_sdh_ble_observers = .);
  }
}
INSERT AFTER .data;

当我使用g ++使用链接描述文件的-T标志链接应用程序时,可执行文件变为不可执行cannot execute binary file: Exec format error

当我删除代码中的extern声明并且不在g ++中使用-T标志时,可执行文件运行正常。

这可能是什么原因?该平台是cygwin。

1 个答案:

答案 0 :(得分:0)

我刚刚找到问题的答案。

.sdh_ble_observers : ALIGN(0x1000)部分添加对齐语句就可以了。