我有一个程序,使用__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。
答案 0 :(得分:0)
我刚刚找到问题的答案。
在.sdh_ble_observers : ALIGN(0x1000)
部分添加对齐语句就可以了。