首頁 > 後端開發 > C++ > 主體

為什麼在 GCC 6.0 中使用 `std::experimental::filesystem` 時出現連結器錯誤?

DDD
發布: 2024-11-17 13:13:02
原創
297 人瀏覽過

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

實驗性::檔案系統的連結器錯誤

當嘗試在目前開發版本的gcc 6.0 中使用新穎的c 1z 功能時,範例程式遇到連結器錯誤:

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

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

    std::cout << "p1 = " << p1 << std::endl;
}
登入後複製

導致下列錯誤:

/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
登入後複製

解決方案

檔案系統TS 不同於C 1z 支持並且不是C 1z 工作草案的一部分。可以透過使用 -lstdc fs 連結來存取庫來解決連結問題。

更新

  • 在GCC 8.x 中,C 17 檔案系統實作也可以在命名空間std::filesystem 中使用-std=gnu 17或-std=c 17,但需要連結到-lstdc fs。
  • 在 GCC 9 中,可以使用 C 17 檔案系統元件,無需 - lstdc fs。
  • 在 GCC 13.3 中,std::experimental::filesystem 符號也可在 -lstdc exp 中使用。

以上是為什麼在 GCC 6.0 中使用 `std::experimental::filesystem` 時出現連結器錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板