2015-09-15 3 views
2

Я загрузил tar 1.28 и пытаюсь скомпилировать статический двоичный файл, который будет использоваться на носителе восстановления системы в Fedora Linux (x86_64). Он не должен включать в себя общие библиотеки, такие как LIBC или Pthreads, но я хотел бы, чтобы устранить зависимость от SELinux, ACL, атр, PCRE и LZMA и т.д.Как создать статическую команду tar

В файле README указывает я могу использовать ./configure CC=gcc LDFLAGS=-static но это создает полностью статический двоичный файл (включая libc), но отсутствует поддержка чего-либо, обычно найденного в общих библиотеках (SELinux, ACL и т. д.). Чтение config.log показывает неудачные попытки найти статическую библиотеку для acl

Итак, я установил libselinux-devel-static RPM и на этот раз получил поддержку selinux там, но я не могу найти статические библиотеки для чего-либо остальное. Результаты поиска говорят, что libacl.a находится в libacl-devel, но не мой.

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

ответ

1

Я смотрел на это, как хорошо, и я хотел бы получить следующее сообщение об ошибке:

CCLD  tar 
../gnu/libgnu.a(quotearg.o): In function `quote': 
/home/anarcat/dist/tar-1.27.1/gnu/quotearg.c:968: multiple definition of `quote' 
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../lib/libacl.a(quote.o):(.text+0x0): first defined here 
names.o: In function `gid_to_gname': 
/home/anarcat/dist/tar-1.27.1/src/names.c:95: warning: Using 'getgrgid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking 
names.o: In function `gname_to_gid': 
/home/anarcat/dist/tar-1.27.1/src/names.c:155: warning: Using 'getgrnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking 
names.o: In function `uname_to_uid': 
/home/anarcat/dist/tar-1.27.1/src/names.c:125: warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking 
names.o: In function `uid_to_uname': 
/home/anarcat/dist/tar-1.27.1/src/names.c:65: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking 
../lib/libtar.a(rtapelib.o): In function `rmt_open__': 
/home/anarcat/dist/tar-1.27.1/lib/rtapelib.c:428: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking 
collect2: error: ld returned 1 exit status 
Makefile:1304: recipe for target 'tar' failed 

Я не совсем понимаю, но, по-видимому, «You cannot getpwnam and friends with the whole flexibility that glibc has without shared libraries».

Итак, игра закончилась? не понятно.

+0

Я до сих пор не получил ответа и не знаю, где еще искать. На данный момент я застрял в использовании разделяемых библиотек, которые делают загрузочный носитель болезненным и чрезмерно большим. – AJJ

+0

Да Я видел эти типы сообщений при попытке статически связать что-то, что само пытается загрузить общую библиотеку во время выполнения, которая будет иметь версию-зависимую. Я просто хочу статически связать все, что могу, без того, чтобы весь libc становился статически связанным. Наконец-то я нашел файл libacl.a и теперь в системе есть статические библиотеки для selinux, pthread, attr и rt. Но скрипт конфигурации кажется все или ничего. Я не могу понять, как указать флаги, которые будут статически связываться в selinux, acl, attr, например, но не libc или pthread. – AJJ

+0

Это тоже неудачно. Я бы хотел, чтобы tar был статичным и автономным, так как иногда мне нужно обновить другие компоненты в моей системе, и tar может выйти из строя. – shevy

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