Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que je reçois une erreur de l'éditeur de liens lors de l'utilisation de « std::experimental::filesystem » dans GCC 6.0 ?

Pourquoi est-ce que je reçois une erreur de l'éditeur de liens lors de l'utilisation de « std::experimental::filesystem » dans GCC 6.0 ?

DDD
DDDoriginal
2024-11-17 13:13:02297parcourir

Why am I getting a linker error when using `std::experimental::filesystem` in GCC 6.0?

erreur d'éditeur de liens pour experimental::filesystem

Lors de la tentative d'utilisation des nouvelles fonctionnalités c 1z dans la version de développement actuelle de gcc 6.0, un L'exemple de programme rencontre une erreur d'éditeur de liens :

#include <iostream>
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;

int main()
{
    fs::path p1 = "/home/pete/checkit";

    std::cout << "p1 = " << p1 << std::endl;
}

Il en résulte l'erreur suivante :

/opt/linux-gnu_6-20151011/bin/g++ --std=c++1z main.cpp -O2 -g -o go
/tmp/ccaGzqFO.o: In function \`std::experimental::filesystem::v1::__cxx11::path::path(char const (&) [36])':
/opt/linux-gnu_6-20151011/include/c++/6.0.0/experimental/bits/fs_path.h:167: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status

Résolution

Le système de fichiers TS est distinct de Prise en charge de C 1z et ne fait pas partie de la version de travail de C 1z. Le problème de liaison peut être résolu en créant un lien avec -lstdc fs pour accéder à la bibliothèque.

Mises à jour

  • Dans GCC 8.x, l'implémentation du système de fichiers C 17 est également disponible dans l'espace de noms std::filesystem avec -std=gnu 17 ou -std=c 17, mais nécessite une liaison vers -lstdc fs.
  • Dans GCC 9, les composants du système de fichiers C 17 peuvent être utilisés sans - lstdc fs.
  • Dans GCC 13.3, les symboles std::experimental::filesystem sont également disponibles dans -lstdc exp.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn