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++.
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
Merci d'avoir corrigé. –
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