LINUX.ORG.RU

strip в SlackBuild'ах


0

0

В большинстве ВиКи и в готовых СлакБилдах можно встретить:

( cd $PKG
     find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : |  xargs strip --strip-unneeded 2> /dev/null
     find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
и недавно на slackbuilds.org видел слакбилд с содержимым в одной из строчек:
( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs strip -g 2> /dev/null
)
еще вот приходилось встречать install-strip

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

И еще вот, извиняюсь, к сожалению пока не могу понять , что происходит и не могли бы, тогда пояснить принцип работы, что происходит в одной из выше приведенных строчек в коде, в строках начинающихся с find? Просто таки не понятно еще, что вырезается

★★★★★

не будет работать отладка с помощью gdb (вывод bt будет малоинформативен) , а так только плюс в том что бинарники будут компактнее

anonymous
()

Вырезает из бинарника всё что не надо для его работы. Большинство прог допускают strip-all. А вот библиотеки это убьёт :)

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

.so библиотеки терпимо относятся к
strip (без параметров)
strip --unneeded
и даже к --strip-unneeded --remove-section=.comment --remove-section=.note

а вот .a действительно становятся неработоспособными ;)

anonymous
()
Ответ на: комментарий от anonymous

Я только про strip-all говорил. У меня оно либы убивало.

true_admin ★★★★★
()

>И еще вот, извиняюсь, к сожалению пока не могу понять , что происходит и не могли бы, тогда пояснить принцип работы, что происходит в одной из выше приведенных строчек в коде, в строках начинающихся с find? Просто таки не понятно еще, что вырезается

Ищутся все файлы, в описании которых (в выводе команды file) есть подстрока "executable" (ну или что-то другое) и подстрока ELF, берётся имя файла и передаётся в strip. Все сообщения об ошибках отправляются в /dev/null. Чтобы лучше понять эту связку, прочитай про find и xargs и попробуй позапускать команды по частям, то есть сначала find, потом find | xargs, потом find | xargs | grep итд.

Laz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.