[devel] --as-needed и --gc-section was: Re: [sisyphus] systemd

Ivan A. Melnikov iv на altlinux.org
Пн Янв 31 20:05:49 UTC 2011


On Mon, 31 Jan 2011 21:39:04 +0300
Alexey Shabalin <a.shabalin на gmail.com> wrote:
[...]
> ibtool: link: x86_64-alt-linux-gcc -std=gnu99 -I/usr/include/dbus-1.0
> -I/usr/lib64/dbus-1.0/include -pipe -Wall -O2 -pipe -Wall -W -Wextra
> -Wno-inline -Wvla -Wundef -Wformat=2 -Wlogical-op -Wsign-compare
> -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral
> -Wold-style-definition -Wpointer-arith -Winit-self
> -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes
> -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations
> -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align
> -Wstrict-aliasing=2 -Wwrite-strings -Wno-long-long
> -Wno-overlength-strings -Wno-unused-parameter
> -Wno-missing-field-initializers -Wno-unused-result
> -Wp,-D_FORTIFY_SOURCE=2 -ffast-math -fno-common
> -fdiagnostics-show-option -fno-strict-aliasing -fvisibility=hidden
> -ffunction-sections -fdata-sections -Wl,--as-needed -Wl,--gc-sections
> -o systemd src/systemd-main.o  ./.libs/libsystemd-core.a -lselinux
> -ldbus-1 -lpthread -ludev -lwrap -lpam -lpam_misc -laudit -lcap -ldl
> -lrt

Читал.

> Правильно ли я понимаю, что пока не собраны все остальные библиотеки
> (libselinux, libdbus, libudev, и остальные ) с параметрами
> -ffunction-sections -fdata-sections -Wl,--gc-sections, то собирать
> systemd с gc-sections не имеет смысла?

Не вижу связи. Эти опции, насколько я понимаю, работают независимо от
зависимостей.

> Стоит ли к нашему gcc по умолчанию добавлять эти опции, как сделано
> для --as-needed? Правильно ли сейчас ругается
> lib.req: WARNING: /home/alex/tmp/systemd-buildroot/bin/systemd:
> overlinked libraries: /lib64/ld-linux-x86-64.so.2
> или lib.req ведёт себя не верно в этом случае.

Ругается правильно, и ведёт себя верно: фактически, программа
перелинкована. Другой вопрос, что не ясно, как с этим бороться, и что
(кроме отсутствия соответсвующей строки в логах сборки) это даст.

> И если верно, может просто убрать gc-sections из параметров линковки?

Это не исправит проблему, но только скроет её. В данном случае
-Wl,--gc-sections делает хорошее дело. ИМХО, правильнее всего этот
warning игнорировать. 

-- 
WBR,
Ivan A. Melnikov


Подробная информация о списке рассылки Devel