11

Mac OS Sierra で LLVM 4.0.0 リリース (Clang、LLD) を使用して単純なプログラムをリンクしようとしています。これは Linux で完全に実現可能です。

現在のパスには、LLVM のbinディレクトリがプレフィックスとして付けられています (つまり、 /opt/LLVM/4.0.0/bin:$PATH.

プログラム ( main.cpp) は、考えられる最も単純な C++ アプリケーションです。

int main()
{
    return 0;
}

発行されるシェル コマンドは次のとおりclang -fuse-ld=lldです。
これは次のエラーで失敗します。

/opt/llvm/4/bin/ld.lld: error: unknown argument: -no_deduplicate
/opt/llvm/4/bin/ld.lld: error: unknown argument: -dynamic
/opt/llvm/4/bin/ld.lld: error: unknown argument: -arch
/opt/llvm/4/bin/ld.lld: error: unknown emulation: acosx_version_min
/opt/llvm/4/bin/ld.lld: error: unable to find library -lto_library
/opt/llvm/4/bin/ld.lld: error: /opt/llvm/4/lib/libLTO.dylib: invalid data encoding
clang-4.0: error: linker command failed with exit code 1 (use -v to see invocation)

スイッチを使用すると-v、次のリンカー コマンド (フォーマット済み) が表示されます。

"/opt/llvm/4/bin/ld.lld" \
    -demangle \
    -lto_library /opt/llvm/4/lib/libLTO.dylib \
    -no_deduplicate \
    -dynamic \
    -arch x86_64 \
    -macosx_version_min 10.12.0 \
    -o a.out \
    main.o \
    -lSystem /opt/llvm/4/bin/../lib/clang/4.0.0/lib/darwin/libclang_rt.osx.a

このプラットフォームに適したスイッチを知っている人はいますか?

4

2 に答える 2