crtbegin_so.o manquant pour android chaîne de compilation (build personnalisée)
J'ai compilé la gdc avec gcc en utilisant l'android build-gcc.sh script, et ont inclus un nouveau tampon dans build/core/définitions.mk à traiter avec D fichiers de langue en tant que partie du processus de construction. Je sais que les choses sont en train de recueillir OK à ce point, mais mon problème est la liaison:
Lorsque je crée un projet, j'obtiens cette erreur:
ld: crtbegin_so.o: No such file: No such file or directory
Cela est vrai pour l'ordinaire c-seuls les projets ainsi. Maintenant, j'ai couru un rapide trouver dans mon répertoire de construction, et a constaté que le fichier (crtbegin_so.o) n'existe pas au sein de la sysroot j'ai précisé que lorsque j'ai compilé gcc (ou plutôt, quand build-gcc.sh construit).
-
Quelles sont certaines des choses que je pourrais chercher pour trouver une solution à ce problème?
-
Serait de copier les fichiers en local et en les reliant directement à eux être une solution décente dans le
intérimaire? -
Pourquoi ld (ou collect2) essayer d'inclure ces pour un gdc (Langage D) couplage?
- stackoverflow.com/questions/7400124/... résolu pour moi 🙂
Vous devez vous connecter pour publier un commentaire.
La question se pose sur NDK r7c pour linux.
J'ai trouvé que la suite d'outils ignore l'emplacement de la plateforme de ($NDK_ROOT/plates-formes/android-8/arch-bras/usr/lib/) et de la recherche dans la suite d'outils chemin, ce qui est incorrect.
Cependant, comme l'ensemble des outils aussi recherche le fichier dans le répertoire courant, une solution consiste à lier plate-forme correcte crtbegin_so.o et crtend_so.o dans le répertoire source:
cd src && ln -s NDK_ROOT/platforms/android-8/arch-arm/usr/lib/crtbegin_so.a
cd src && ln -s NDK_ROOT/platforms/android-8/arch-arm/usr/lib/crtend_so.a
Donc votre deuxième point de travail (où vous pouvez faire un lien symbolique, au lieu d'une copie)
NOTE 1:Cela suppose que le code est compilé pour API8 (Android 2.2) à l'aide du NDK. Veuillez modifier le chemin d'accès au chemin d'accès correct selon votre condition.
REMARQUE 2:Configurer les indicateurs utilisés:
J'ai trouvé que l'ajout de
--sysroot=$(SYSROOT)
pour les options du compilateur résout l'erreur:de mon makefile...
Note: ceci suppose que l'setenv-android.sh a été exécuté pour l'installation de l'environnement
$. ./setenv-android.sh
Dans mon cas, les citations ont été absents de la sysroot chemin.
Quand j'ai changé de
à
le projet a été compilé et lié avec succès.
Je pose la même question dans deux cas distincts:
boost
pour androidandroid-cmake
projet.Une fois que j'ai passé à
standalone toolchain
question disparu, ici est un exemple de commande qui préparentstandalone toolchain
D'amplifier certaines
pour le coup de pouce que vous devez spécifier
--sysroot
plusieurs fois dans votrejam