2013-07-03 2 views
0

Это определенно берет торт с точки зрения того, что вы являетесь самой большой единственной частью исполняемого кода, которую я когда-либо видел.Действительно ли liblldb-core.a действительно должен быть размером 763 МБ?

enter image description here

Теперь это было немного легче получить всю эту вещь, построенную на моем Mac здесь (я пытался построить LLDB на Linux, а также, и в настоящее время я борюсь с привязкой к Python есть), за что я благодарен, но этот потрясающе большой исполняемый файл сам меня угадывает ... Я сделал что-то не так? Что внутри этого чудовищного архива?

я запускаю это:

% otool -TV liblldb-core.a 

Он производит 1159 строк вывода, что ставит его вокруг 350+ объектных файлов. Это звучит правильно, я видел, что проект XCode прорабатывает около 350 исходных файлов.

Я думаю, что мой вопрос в том, почему LLDB работает таким образом, почему он не является более легким и почему он не просто ссылается на код LLVM и Clang, а на то, что он делает? ИЛИ, являются ли содержимое этого архива уже полным кодом LLDB? Я признаю, что создание отладчика - это совершенно обязательство, но это, честно говоря, просто ошеломительно.

Я знаю, что скомпилировать по адресу -O3 Возможно, раздутый размер исполняемого файла. Я не собираюсь возвращаться и перекомпилировать этого монстра, хотя (компьютер почти растаял, когда smcFanControl сообщал о том, что процессорные ядра составляют до 106 градусов C).

Update: Я сортирую хронику некоторое дальнейшее обучение, я только что сделал over here ... Я до сих пор не удалось найти чудовищный liblldb-core.a или что-нибудь в этом роде внутри XCode.app, и я все еще немного запутался в том, как все это работает.

ответ

1

Это отладочная информация, которая является реальной проблемой с liblldb-core.a. Около 720 МБ 750 МБ - DWARF. (Вы можете протестировать это самостоятельно - ar x liblldb-core.a в каталог, затем strip -S *.o, и у вас будет около 32 МБ .o файлов.) DWARF без реального типа uniquing имеет некоторые неприятные навороты с программами на C++.

Я могу сделать .tar.gz (лишенный) LLDB-фреймворк и программу драйвера lldb, и они приходят со скоростью около 10 МБ или около того с этим сжатием - и это происходит после связывания во всех llvm и clang-бит, необходимых lldb , Здесь нет ничего особенно возмутительного, даже если промежуточные шаги могут выглядеть сумасшедшими.

1

Я должен был заметить, что я сделал первый скриншот внутри каталога сборки Debug, который указывает, что он огромен потенциально из-за конфигурации сборки, которую я использовал.

Редактировать: Нет, это не совсем ответ. Каталог Release фактически содержит liblldb-core.a, который немного больше, чем другой.

Похоже, что этот огромный архив 700 МБ является своего рода файлом «побочного эффекта». Когда я архивировал проект, он создал файл 369MB .xarchive. Я уверен, что это лучшее представление о «содержании» здесь. Я до сих пор в основном изучение этого материала путем споткнуться в темноте ...

Update:

О, хорошо, глядя на эту ситуацию он делает немного больше смысла:

enter image description here

Я вынул эти файлы из каталога Release после его создания в Xcode (и минимально настраивал его для использования -O3 для выпуска). Я вижу здесь, что файл ~ 350MB dSYM, содержащий отладочную информацию, занимает большую часть пространства .xarchive от ранее, и что фактически исполняемый код lldb составляет менее 40 МБ, большинство из которых находится в этой структуре в исполняемый файл с именем LLDB.

Это намного более разумно для меня. Теперь, когда я получил его из Xcode и в папку «Мои документы», где я могу быть увереннее, что никакая внешняя программа не удалит или не изменит его, не зная, я могу чувствовать себя хорошо о символической привязке отсюда до /usr/lib/lldb.

Смежные вопросы