CMake가 링커로 GNU ld
대신 LLVM 링커 llvm-link
을 사용하는 가장 좋은 방법은 무엇입니까?Clang과 CMake를 사용할 때 LLVM 링커 사용하기
CXX=clang++ cmake <args>
으로 프로젝트를 구성 할 때 기본 링커는 usr/bin/ld
(리눅스)를 나머지, 훼손되지 않은 것으로 보인다.
using a separate toolchain file없이 가능합니까?
CMake가 링커로 GNU ld
대신 LLVM 링커 llvm-link
을 사용하는 가장 좋은 방법은 무엇입니까?Clang과 CMake를 사용할 때 LLVM 링커 사용하기
CXX=clang++ cmake <args>
으로 프로젝트를 구성 할 때 기본 링커는 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
에 링커를 변경하려면, 하나는 처음
가
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
를 우회 : 링커를 호출 한 후 예컨대을 LLVM 바이트 코드를 방출하고, 필요가있다.
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