内存部分处理错误

Bas*_*evs 8 c++ assembly linker gnu

我收到链接时间错误:

WARNING: /home/gulevich/development/camac-fedorov/camac/linux/k0607-lsi6/camac-k0607-lsi6.o (.ctors): unexpected non-allocatable section.
Did you forget to use "ax"/"aw" in a .S file?
Note that for example <linux/init.h> contains
section definitions for use in .S files.
Run Code Online (Sandbox Code Playgroud)

导致错误的代码(在C源代码中汇编):

# if   defined(__ELF__)
#  define __SECTION_FLAGS ", \"aw\" , @progbits"
 /* writable flag needed for ld ".[cd]tors" sections bug workaround) */
# elif defined(__COFF__)
#  define __SECTION_FLAGS ", \"dr\""
 /* untested, may be writable flag needed */
# endif


asm
(
 ".section .ctors" __SECTION_FLAGS "\n"
 ".globl __ctors_begin__\n"
 "__ctors_begin__:\n"
 ".previous\n"
);
Run Code Online (Sandbox Code Playgroud)

有没有什么办法解决这一问题?这个想法是__ctors_begin__在某个记忆部分的开头放置一个变量.此代码是使用不同的构建系统和较旧的编译器正常工作的遗留代码.

在上一个问题的答案中解释了这个汇编代码的含义.

Sch*_*ler 0

长远来看:也许您的链接器需要 ELF 格式(而不是 COFF),并且由于某种原因__ELF__未定义?您是否检查过此特定构建的预处理器输出?