2010-04-25 3 views
6

Lors du débogage d'une erreur de lien (undefined reference to _dso_handle) à l'aide de la chaîne d'outils Android x86, j'ai remarqué qu'il liait statiquement crtbegin_dynamic.o. Quel est le but de ce fichier? Il y a un autre crtbegin.o similaire dans le répertoire d'installation de toolchain qui contient le symbole manquant (_dso_handle). Quelle est la difference entre crtbegin.o et crtbegin_dynamic.o?Qu'est-ce que crtbegin.o et crtbegin_dynamic.o?

+0

Logicor a fourni cette réponse. Je vais le reproduire comme un commentaire car il va probablement disparaître: * "Voici une explication plus détaillée à ce sujet: https://gcc.gnu.org/onlinedocs/gccint/Initialization.html"*. – jww

+0

Connexe: [Différence entre les variantes crtbegin.o?] (Http://stackoverflow.com/q/22160888/608639). Cela ne ressemble pas à duper (sinon, je voterais le premier sur ma question). – jww

Répondre

-5

Je pense qu'ils se rapportent à des bibliothèques dynamiques (objets partagés) et des exécutables, mais pas tout à fait sûr. J'espère que cela vous donne une avance.

10

C++ possède des constructeurs et des destructeurs globaux. crtbegin.o et crtend.o traitent d'appeler ces constructeurs et destructeurs. Les variantes de crtbegin.o telles que crtbeginS.o font la même chose pour d'autres types d'exécutables tels que les exécutables statiques et les bibliothèques partagées.

Questions connexes