g++ - 即使在 -lstdc++ 标志之后,std::experimental::filesystem::v1::status 链接错误
问题描述
我尝试使用 c++1z 功能来使用 std::experimental::filesystem
在使用 g++ 添加 -lstdc++fs 标志后,我可以看到我能够将 std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts() 与我的程序链接。
即我不再收到此错误
sdc.cpp:(.text+0x7e5): 未定义引用`std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
但是,即使在链接之后,我也会收到以下错误。
g++ -std=c++1z timer.cpp -lstdc++fs -O2 -I include -L lib -lOpenTimer -lpthread -o timer.out lib/libOpenTimer.a(spef.cpp.o): 在函数
spef::Spef::read(std::experimental::filesystem::v1::__cxx11::path const&)': spef.cpp:(.text._ZN4spef4Spef4readERKNSt12experimental10filesystem2v17__cxx114pathE[_ZN4spef4Spef4readERKNSt12experimental10filesystem2v17__cxx114pathE]+0x2e): undefined reference to
std: :experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)' lib/libOpenTimer.a(sdc.cpp.o): 在函数ot::sdc::home[abi:cxx11]()': sdc.cpp:(.text+0x414): undefined reference to
std::experimental ::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)' sdc.cpp:(.text+0x7ab): 未定义对std::experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)' lib/libOpenTimer.a(sdc.cpp.o): In function
ot::sdc::SDC的引用::read(std::experimental::filesystem::v1::__cxx11::path const&)': sdc.cpp:(.text+0x2fa1): 未定义对std::experimental::filesystem::v1::status(std::experimental::filesystem::v1::__cxx11::path const&)' sdc.cpp:(.text+0x3084): undefined reference to
std::experimental::filesystem::v1::的引用status(std::experimental::filesystem::v1::__cxx11::path const&)' sdc.cpp:(.text+0x30db): undefined reference tostd::experimental::filesystem::v1::current_path[abi:cxx11]()' sdc.cpp:(.text+0x30f7): undefined reference to
std::experimental::filesystem::v1::absolute(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::__cxx11::path const&) ' sdc.cpp:(.text+0x3788): undefined reference tostd::experimental::filesystem::v1::remove(std::experimental::filesystem::v1::__cxx11::path const&)' lib/libOpenTimer.a(os.cpp.o): In function
ot::user_homeabi:cxx11': os.cpp:(.text+0x30d): undefined reference to `std::experimental::filesystem::v1:: current_pathabi:cxx11' collect2:错误:ld 返回 1 退出状态
任何解决此问题的帮助将不胜感激。
解决方案
是我发了这个问题。似乎我能够自己解决它。
我在末尾添加了 -lstdc++fs 而不是中间,它开始工作了。
这是更新的命令
g++ -std=c++1z timerapp.cpp -O2 -I include -L lib -lOpenTimer -lpthread -o timer.out -lstdc++fs
与上一个命令相比
g++ -std=c++1z timerapp.cpp -lstdc++fs -O2 -I include -L lib -lOpenTimer -lpthread -o timer.out
不知道为什么最终会添加一些链接标志。
推荐阅读
- c# - 如果没有结果,在图表区域插入标签
- css - 使 React-Modal 不透明
- nginx - (从上游读取响应标头时,上游过早关闭连接)..... && 502 bad gateway
- javascript - 陷入地理位置和反向地理位置
- linux - 从 .csv 日志文件中的文本文件中搜索 IP,如果找到,则在其旁边添加新列
- r - dplyr 使用 purrr::map 计算小标题列表中的单个观察值
- jenkins - 如何使用 Jenkins 管道中的 fabric8 maven 插件将 docker 映像推送到 Google Container Registry:未经授权
- javascript - 使用 Socket.io 更新 fullCalendar 时出错
- python - 一次替换 Pandas Series 的多个子串
- c# - 从 Angular 传递数据永远不会到达 c# 控制器