Мне сказали, что clang - это драйвер, который работает как gcc, чтобы выполнить предварительную обработку, компиляцию и работу с привязкой. Во время компиляции и связи, насколько я знаю, на самом деле это делает оптимизацию ("-O1", "-O2", "-O3", "-Os", "-flto"
).
Но я просто не могу понять , как задействован llvm.
Кажется, что для компиляции исходного кода даже не нужна статическая библиотека, такая как libLLVMCore.a
, а для пакетов debian clang зависит от другого пакета с именем libllvm-3.4
(версия clang - 3.4), которая содержит libLLVM-3.4.so(.1)
, делает clang использует эту общую библиотеку для оптимизации?
Я некоторое время проверял исходный код clang и обнаружил, что include/clang/Driver/Options.td
содержит связанные параметры, но, к сожалению, я не смог найти исходные файлы, которые включают этот файл, поэтому я до сих пор не знаю о механизме.
Я надеюсь, что кто-то может дать мне несколько советов.