Ich versuche, ein C-Programm zu kompilieren, aber ich erhalte den Fehler „RTLD_NEXT“ undeklariert. Ich denke, dies sollte in dlfcn.h definiert werden, das das c-Programm enthält, aber als ich in dlfcn.h nachgesehen habe, gibt es kein RTLD_NEXT.
Wie behebe ich das?
Sie sollten uns besser genau sagen, welche Linux-Distro und gcc-Version Sie verwenden, wenn Sie _GNU_SOURCE definieren und keinen Erfolg haben.
– bmargulies
22. November 2009 um 2:21 Uhr
@bmargulies: Er verwendet Cygwin (siehe stackoverflow.com/questions/1777523/… ), was nicht unterstützt wird RTLD_NEXT (siehe zB listen.zerezo.com/cygwin/msg38882.html )
– Christoph
22. November 2009 um 2:41 Uhr
bmargulies
Das Problem hier ist das RTLD_NEXT wird nicht durch die definiert Posix-Standard . Die GNU-Leute aktivieren es also nur, wenn Sie es tun #define _GNU_SOURCE oder -D_GNU_SOURCE.
Andere relevante Teile von POSIX sind dlfcn.h und dlsym.h. Interessanterweise die späteren Erwähnungen RTLD_NEXT. Anscheinend sind die GNU-Leute etwas verwirrt darüber, was eine Erweiterung ist und was nicht.
Sie sollten uns besser genau sagen, welche Linux-Distro und gcc-Version Sie verwenden, wenn Sie _GNU_SOURCE definieren und keinen Erfolg haben.
– bmargulies
22. November 2009 um 2:21 Uhr
@bmargulies: Er verwendet Cygwin (siehe stackoverflow.com/questions/1777523/… ), was nicht unterstützt wird
RTLD_NEXT
(siehe zB listen.zerezo.com/cygwin/msg38882.html )– Christoph
22. November 2009 um 2:41 Uhr