链接描述文件中断程序

Linker Script Breaks Program

我有一个程序使用 __attribute__ ((".sdh_ble_observers"))extern mytype * ___start_sdh_ble_observers.

将一些结构放置在命名部分中

我正在使用以下 linker 脚本

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

当我使用 g++ link 应用程序使用 linker 脚本的 -T 标志时,可执行文件变得不可执行 cannot execute binary file: Exec format error

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

这可能是什么原因造成的?平台为cygwin.

我刚刚找到问题的答案。

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