Возможна ли оптимизация профиля с помощью общих библиотек в gcc? - PullRequest
2 голосов
/ 03 июня 2010

Недавно я выпустил новый набор инструментов для Linux с gcc 4.5.0 и binutils 2.20 с золотом. Теперь мне было любопытно об этой новой вещи PGO. Хотя понятно, как это работает с исполняемыми файлами, я не смог найти ответ по общим библиотекам. Я нашел два неотвеченных сообщения в списке рассылки gcc через Google, вот и все.

Итак, вот что я попробовал: Пока я не отмечаю -fprofile-generate все хорошо, и мой .so dlopen () 'управляется основной программой и работает без нареканий. Когда компилируется и связывается с -fprofile-generate, библиотека загружается, все работает, но когда я заканчиваю основную программу, я получаю sigsegv с coredump.

Я загрузил corefile в gdb и получил это:

#0 0x00000000 in ?? ()
No symbol table info available.
#1 0x1f32bc2f in ?? ()
No symbol table info available.
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

И, конечно, никакие файлы .cdda не сохраняются.

Есть идеи?

Филипп

1 Ответ

2 голосов
/ 08 декабря 2010

Я создаю общую библиотеку с PGO.

Что я делаю, так это создаю каталог "profile" со всеми .o файлами с profile-generate. Затем я связываю их в общую библиотеку. Затем я выполняю прогон профилирования с библиотекой, связанной с исполняемым файлом, также созданным с помощью профиля-генерации.

После этого я создаю каталог "release" со всеми файлами .o, созданными с использованием профиля, связываю их с общей библиотекой, и у меня есть общая библиотека, созданная с PGO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...