リンカーとしてGNake ld
の代わりにLLVMリンカーllvm-link
を使用するようにCMakeに伝える最も良い方法はありますか?ClangとCMakeの使用時にLLVMリンカーを使用する
CXX=clang++ cmake <args>
でプロジェクトを設定する場合、デフォルトのリンカは(Linux上)usr/bin/ld
残り、そのままであるように思われます。
using a separate toolchain fileなしで可能ですか?
リンカーとしてGNake ld
の代わりにLLVMリンカーllvm-link
を使用するようにCMakeに伝える最も良い方法はありますか?ClangとCMakeの使用時にLLVMリンカーを使用する
CXX=clang++ cmake <args>
でプロジェクトを設定する場合、デフォルトのリンカは(Linux上)usr/bin/ld
残り、そのままであるように思われます。
using a separate toolchain fileなしで可能ですか?
これはCMakeと無関係であることが判明しました。clang++
はデフォルトでシステムリンカーを使用します。たとえば、
echo "#include <atomic>\n int main() { return 0; }" \
| clang++ -x c++ -std=c++11 -stdlib=libc++ -
/usr/bin/ld
を使用してアプリケーションをリンクします。 llvm-link
にリンカーを変更するためには、最初のLLVMバイトコードを発する必要があり、その後、リンカーを呼び出し、例えば:
echo "#include <atomic>\n int main() { return 0; }" \
| clang++ -x c++ -std=c++11 -stdlib=libc++ -S -emit-llvm -o - - \
| llvm-link -o binary -
これは/usr/bin/ld
を迂回します。
3.4から、clang
はld
を探す前にGCCInstallation.getParentLibPath() + "/../" + GCCInstallation.getTriple().str() + "/bin"
にリンカー(ld
)を探します。リンカーを/usr/lib/gcc/<arch><sub>-<vendor>-<sys>-<abi>/<version>/ld
に入れ、clang
で1ステップで呼び出すことができるはずです。この場所を手動で指定するには、文書化されていない-B
フラグを使用します。残念ながら、私は、ld.goldを使用して検索されるリンカーの名前を変更する方法があるとは考えていません。また、lldは前述の場所でシンボリックリンクが必要になります。
https://stackoverflow.com/a/25274328/69663と思われる – unhammer