8
votes

crtbegin_so.o manquant pour Toolchain Android (Construction personnalisée)

J'ai compilé GDC avec GCC à l'aide du script Android Build-gcc.sh et avez inclus un nouveau talon dans la construction / Core / définition.mk pour traiter des fichiers de langue D dans le cadre du processus de construction. Je sais que les choses sont en train de compiler ok à ce stade, mais mon problème relie:

Lorsque je construis un projet, je reçois cette erreur: P>

ld: crtbegin_so.o: No such file: No such file or directory


1 commentaires

4 Réponses :


12
votes

Le problème se pose également sur NDK R7C pour Linux.

J'ai trouvé que la boîte à outils ignore l'emplacement de la plate-forme ($ ndk_root / plates-formes / android-8 / arc-bras / usr / lib /) Je> et la recherche dans le chemin d'accès à la boîte à outils, qui est incorrecte. P>

Cependant, comme lache de la liste d'outils recherche également le fichier dans le répertoire actuel, une solution consiste à symboliser la plate-forme correcte crtbegin_so.o et crtend_so .o dans le répertoire source: p>

CD src && ln -s ndk_root / plates-formes / Android-8 / Arch-arch-bras / USR / LIB / CRTBEGIN_SO.A CODE> P> P>

p>

cd src && ln -s ndk_root / plates-formes / android-8 / arc-arche / usr / lib / crtend_so.a code> p>

Ainsi Votre deuxième point devrait fonctionner (où vous pouvez faire un lien symbolique, au lieu d'une copie) p>

note 1: b> Cela suppose que le code est compilé pour API8 (Android 2.2) en utilisant le NDK. S'il vous plaît modifier le chemin du chemin correct selon votre condition. P>

Note 2: B> Configurer les indicateurs utilisés: P>

./configure \
--host=arm-linux-androideabi \
CC=arm-linux-androideabi-gcc \
CPPFLAGS="-I$NDK_ROOT/platforms/android-8/arch-arm/usr/include/" \
CFLAGS="-nostdlib" \
LDFLAGS="-Wl,-rpath-link=$NDK_ROOT/platforms/android-8/arch-arm/usr/lib/ -L$NDK_ROOT/platforms/android-8/arch-arm/usr/lib/" \
LIBS="-lc"


1 commentaires

C'est génial, merci! Maintenant, je peux construire du GDC contre la boîte à outils Android.



0
votes

J'ai rencontré le même problème dans deux cas distincts:

  1. lors du bâtiment boost pour Android
  2. Pendant l'utilisation de Android-Cumake projet.

    Une fois que je suis passée à Toolchain autonome Emission GELÉ, voici l'exemple de commande qui préparez Toolchain autonome xxx

    boost spécifique

    pour boost Vous avez besoin de spécifier - sysroot plusieurs fois dans votre Jam xxx


0 commentaires

5
votes

J'ai trouvé que l'ajout - sysroot = $ (sysroot) sur les options du compilateur corrige l'erreur:

ne peut pas ouvrir crtbegin_so.o: aucun fichier ou répertoire de ce type

de mon maquillage ... xxx

Remarque: cela suppose que le setenv-android.sh a été exécuté pour configurer l'environnement
$. ./setenv-android.sh


1 commentaires

Dans VS2019, comme cela fait partie de la phase de liaison, je devais ajouter - sysroot = "$ (sysrotlink)" sur les options de ligne de commande de liaison



1
votes

Dans mes citations de cas, il manquait le chemin de Sysroot. Lorsque j'ai changé xxx

à xxx

Le projet a été compilé et lié avec succès.


0 commentaires