Rumah > pembangunan bahagian belakang > C++ > Mengapa saya mendapat ralat pemaut apabila menggunakan `std::experimental::filesystem` dalam GCC 6.0?

Mengapa saya mendapat ralat pemaut apabila menggunakan `std::experimental::filesystem` dalam GCC 6.0?

DDD
Lepaskan: 2024-11-17 13:13:02
asal
383 orang telah melayarinya

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

ralat pemaut untuk eksperimen::sistem fail

Apabila cuba menggunakan ciri novel c 1z dalam versi pembangunan semasa gcc 6.0, contoh program menghadapi ralat pemaut:

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

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

    std::cout << "p1 = " << p1 << std::endl;
}
Salin selepas log masuk

Menghasilkan ralat berikut:

/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
Salin selepas log masuk

Resolusi

TS Sistem Fail berbeza daripada Sokongan C 1z dan bukan sebahagian daripada draf kerja C 1z. Isu pemautan boleh diselesaikan dengan memautkan dengan -lstdc fs untuk mengakses perpustakaan.

Kemas kini

  • Dalam GCC 8.x, pelaksanaan Sistem Fail C 17 juga tersedia dalam ruang nama std::sistem fail dengan -std=gnu 17 atau -std=c 17, tetapi memerlukan pemautan ke -lstdc fs.
  • Dalam GCC 9, komponen sistem fail C 17 boleh digunakan tanpa - lstdc fs.
  • Dalam GCC 13.3, simbol std::experimental::filesystem juga tersedia dalam -lstdc exp.

Atas ialah kandungan terperinci Mengapa saya mendapat ralat pemaut apabila menggunakan `std::experimental::filesystem` dalam GCC 6.0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan