2016-02-18 2 views
0

J'ai installé la bibliothèque cds avec la commande ./build.sh -b 64 -z '-std=c++0x' -l '-L /usr/lib/x86_64-linux-gnu' --with-boost /usr/include/boost --amd64-use-128bit au dossier build.Erreur fatale - Aucun fichier ou répertoire de ce type

Après avoir essayé de compiler l'exemple init.cpp du dossier src, je dactylographiées ce dans le terminal: g++ init.cpp -o init, et le terminal a montré: fatal error: cds/init.h: No such file or directory.

Que dois-je faire pour la commande de compilation dans ce cas? Merci.

+0

Est-ce que '-L/usr/ib/x86_64-linux-gnu' est une faute de frappe? (Vous vouliez probablement dire '-L/usr/lib/x86_64-linux-gnu') – optisimon

+0

Merci d'avoir corrigé. –

+0

Avez-vous installé 'libcds' ou l'avez-vous simplement construit? Pouvez-vous vérifier que 'cds/init.h' se trouve quelque part dans le répertoire'/usr/include'? – alvits

Répondre

0

Pour le dépannage général dans les cas comme celui-ci, je vous recommande de trouver où sur le système le fichier a été installé (si votre build.sh a réellement installé le fichier). Vous seriez en mesure de trouver le fichier d'en-tête manquant à l'aide

find/-path '*/cds/init.h' 2>/dev/null 

Ensuite, vous devez fournir deux paramètres g ++:

D'abord, on obtient le compilateur de connaître les fichiers à inclure dans le répertoire d'installation

-I path_to_folder_one_step_above_cds_folder

Le second permet à l'éditeur de liens de connaître l'emplacement des bibliothèques. Si le fichier de bibliothèque est appelée libcds.so, vous pouvez le trouver en exécutant

find/-name libcds.so 2>/dev/null 

Donc, pour relier, vous fournissez le drapeau

-L path_to_folder_one_step_above_libcds.so

Dans votre cas, vous ne pourriez pas vous avez besoin de l'option -L, car la plus grande partie de votre bibliothèque est censée être en-tête uniquement. MISE À JOUR: le script build.sh imprime des informations importantes en commençant par "Construire avec les options suivantes:". Les bits importants seront "Options de compilation:" et "Options de lien:". Ceux-ci devraient suffire à résoudre votre option spécifique.

UPDATE2: build.sh exporte également certains indicateurs qui pourraient inclure plus d'options. Vous pouvez les imprimer directement après l'exécution build.sh en exécutant

echo LDFLAGS=$LDFLAGS 
echo CFLAGS=$CFLAGS 
echo CXXFLAGS=$CXXFLAGS 

vous aurez probablement besoin de passer toutes ces options à g ++ lors de la compilation et la liaison sur cette bibliothèque. Les LDFLAGS sont spécifiques à l'éditeur de liens uniquement. Les deux autres sont nécessaires pour compiler les fichiers C++.