Ich erhalte einen Link Zeitfehler:Speicherabschnitt Bedienungsfehler
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.
Der Code den Fehler verursacht (Montage in C-Quelle):
# 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"
);
Gibt es eine Möglichkeit, dies zu beheben? Die Idee ist, am Anfang eines bestimmten Speicherbereichs eine Variable __ctors_begin__
zu setzen. Dieser Code ist ein Vermächtnis, das mit einem anderen Build-System und älteren Compiler funktioniert hat.
Bedeutung dieser Assembly-Code in an answer to my previous question erläutert.
Welchen C-Compiler benutzen Sie? – bdonlan
Als eine zusätzliche Notiz kompiliert der genaue Code gut in GCC 4.4.1 auf 64-Bit-Ubuntu – bdonlan
Dies ist Link Zeit Fehler, keine Kompilierzeit eins. Hier ist Versionsinformation: Linker: GNU ld (GNU Binutils für Debian) 2.20.1-System.20100303; Compiler: gcc (Debian 4.4.2-9) 4.4.3 20100108 (Vorabversion). – Basilevs