После обновления llvm не может найти <filesystem>ссылок на macOS с hombrew - PullRequest
0 голосов
/ 03 апреля 2019

Я обновил установку llvm, так что теперь я использую Clang8.После этого я продолжаю получать эту ошибку:

Undefined symbols for architecture x86_64:
  "std::__1::__fs::filesystem::__status(std::__1::__fs::filesystem::path const&, std::__1::error_code*)", referenced from:
      std::__1::__fs::filesystem::is_directory(std::__1::__fs::filesystem::path const&) in main-de2419.o
ld: symbol(s) not found for architecture x86_64
clang-8: error: linker command failed with exit code 1 (use -v to see invocation)

Так что он может найти заголовок для filesystem, но не lib (как я понимаю).У меня есть эта тестовая программа:

#include <filesystem>
#include <iostream>

int main(void)
{
    auto isDir = std::filesystem::is_directory("./main.cpp");
    std::cout << isDir << std::endl; 
    return 0; 
}

И я компилирую ее таким образом clang++ -std=c++17 main.cpp.Если с -v выводом будет:

clang version 8.0.0 (tags/RELEASE_800/final)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin
 "/usr/local/Cellar/llvm/8.0.0/bin/clang-8" -cc1 -triple x86_64-apple-macosx10.14.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name main.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -ggnu-pubnames -target-linker-version 409.12 -v -resource-dir /usr/local/Cellar/llvm/8.0.0/lib/clang/8.0.0 -stdlib=libc++ -internal-isystem /usr/local/opt/llvm/bin/../include/c++/v1 -std=c++17 -fdeprecated-macro -fdebug-compilation-dir /Users/larsnielsen/Desktop/test/test_filesystem -ferror-limit 19 -fmessage-length 160 -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fobjc-runtime=macosx-10.14.0 -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/df/wm8q24k53dz09jn4q35122bw0000gn/T/main-2be1ed.o -x c++ main.cpp
clang -cc1 version 8.0.0 based upon LLVM 8.0.0 default target x86_64-apple-darwin18.2.0
ignoring nonexistent directory "/usr/include/c++/v1"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/opt/llvm/bin/../include/c++/v1
 /usr/local/include
 /usr/local/Cellar/llvm/8.0.0/lib/clang/8.0.0/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
 "/usr/bin/ld" -demangle -lto_library /usr/local/Cellar/llvm/8.0.0/lib/libLTO.dylib -no_deduplicate -dynamic -arch x86_64 -macosx_version_min 10.14.0 -o a.out /var/folders/df/wm8q24k53dz09jn4q35122bw0000gn/T/main-2be1ed.o -lc++ -lSystem /usr/local/Cellar/llvm/8.0.0/lib/clang/8.0.0/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
  "std::__1::__fs::filesystem::__status(std::__1::__fs::filesystem::path const&, std::__1::error_code*)", referenced from:
      std::__1::__fs::filesystem::is_directory(std::__1::__fs::filesystem::path const&) in main-2be1ed.o
ld: symbol(s) not found for architecture x86_64
clang-8: error: linker command failed with exit code 1 (use -v to see invocation)

Я набрал несколько вариантов решения, но безуспешно:

  • Я перешел на использование <experimental/filesystem>
  • Я пытался связать stdc++fs и c++fs
  • Я пытался экспортировать LDFLAGS="-L/usr/local/opt/llvm/lib" и CPPFLAGS="-I/usr/local/opt/llvm/include"
  • И я добавил это в свой .bash_profile export PATH="/usr/local/opt/llvm/bin:$PATH"

У меня есть обновление LLVM как на моей Fedora, так и на macOS, и проблема возникает только на Mac.Я обновил с помощью доморощенного на MacOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...