You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Clang编译项目时出现__time64_t未定义错误求助

GCC编译正常但Clang编译出现__time64_t未定义错误的解决方法

我用GCC编译项目完全正常,但切换到任意基于Clang的编译器时,会触发以下错误:

[build] /usr/bin/clang++ -I/mnt/40ab93ed-5db8-4e22-a055-9775c3e5b937/ISC-parser/include -I/mnt/40ab93ed-5db8-4e22-a055-9775c3e5b937/ISC-parser/stdlibs -I/media/ura/Data/include -g -std=c++17 -MD -MT CMakeFiles/parser.dir/src/CLL/function/function.cpp.o -MF CMakeFiles/parser.dir/src/CLL/function/function.cpp.o.d -o CMakeFiles/parser.dir/src/CLL/function/function.cpp.o -c /mnt/40ab93ed-5db8-4e22-a055-9775c3e5b937/ISC-parser/src/CLL/function/function.cpp
[build] In file included from /mnt/40ab93ed-5db8-4e22-a055-9775c3e5b937/ISC-parser/src/CLL/function/function.cpp:4:
[build] In file included from /mnt/40ab93ed-5db8-4e22-a055-9775c3e5b937/ISC-parser/include/parser.h:8:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/iostream:41:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/ostream:40:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/ios:44:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/ios_base.h:39:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/ext/atomicity.h:35:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/gthr.h:157:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/gthr-default.h:35:
[build] In file included from /include/pthread.h:22:
[build] In file included from /include/sched.h:31:
[build] /usr/include/x86_64-linux-gnu/bits/types/time_t.h:8:9: error: unknown type name '__time64_t'
[build]     8 | typedef __time64_t time_t;
[build]       |         ^
[build] In file included from /mnt/40ab93ed-5db8-4e22-a055-9775c3e5b937/ISC-parser/src/CLL/function/function.cpp:4:
[build] In file included from /mnt/40ab93ed-5db8-4e22-a055-9775c3e5b937/ISC-parser/include/parser.h:8:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/iostream:41:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/ostream:40:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/ios:44:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/ios_base.h:39:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/ext/atomicity.h:35:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/gthr.h:157:
[build] In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14/bits/gthr-default.h:35:
[build] In file included from /include/pthread.h:22:
[build] In file included from /include/sched.h:32:
[build] /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h:14:3: error: unknown type name '__time64_t'
[build]    14 |   __time64_t tv_sec;            /* Seconds.  */
[build]       |   ^

以下是针对性的解决步骤:

  • 修正Clang的系统头文件路径
    错误日志显示编译时引用了异常路径/include/pthread.h(正常应为/usr/include/pthread.h),说明Clang未正确识别系统标准头文件路径。可在CMake中添加:

    include_directories(SYSTEM /usr/include)
    

    或直接在编译参数中加入-isystem /usr/include,强制Clang使用正确的系统头文件目录。

  • 切换Clang的C++标准库
    Clang默认可能 fallback 到GCC的libstdc++,存在版本兼容性问题。可强制使用LLVM的libc++,编译时添加参数:

    -stdlib=libc++ -lc++abi
    

    若系统未安装libc++,先执行:

    sudo apt install libc++-dev libc++abi-dev
    
  • 调整编译宏定义顺序
    -D_TIME_BITS=64和-D_FILE_OFFSET_BITS=64必须在所有头文件包含前定义才生效。在CMake中优先添加:

    add_compile_definitions(_TIME_BITS=64 _FILE_OFFSET_BITS=64)
    

    或在编译命令中将宏定义放在最左侧:

    clang++ -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 [其他编译参数]
    
  • 修复系统头文件
    检查/usr/include/x86_64-linux-gnu/bits/types/time_t.h是否存在且定义正常,若文件损坏,重新安装系统头文件包:

    sudo apt reinstall libc6-dev
    

内容的提问来源于stack exchange,提问作者Sinfolke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:23:10