как сделать статический двоичный файл coreutils?

Я пытаюсь сделать статический двоичный файл комнаты, таким образом, я пытался компилировать coreutils с

configure; make SHARED=0 CC='gcc -static'; make install

но я продолжаю сталкиваться с ошибками.

Сначала сделайте, жалуется на c99 или gnu99, я решил это путем добавления-std=gnu99 к значению CC:

make SHARED=0 CC='gcc -static -std=gnu99'

После этого это говорит:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginT.o: error adding symbols: Bad value

Я пытался добавить,-fPIC как я добавил - опция станд., но напрасно.

Даже возможно сделать статические двоичные файлы coreutils? (только заинтересованный комнатой) Если так, как? (У меня есть 0 опыта с созданием двоичных файлов Linux),

PS: Я загрузил coreutils источник с сайта человечности, надежного человека. (coreutils-8.21)

5
задан 30 September 2014 в 18:54

2 ответа

На этот комментарий об ошибке # 640734 , существует обходное решение, которое можно попробовать:

$ cd /usr/lib/gcc/x86_64-linux-gnu/4.8
$ sudo cp crtbeginT.o crtbeginT.orig.o
$ sudo cp crtbeginS.o crtbeginT.o

кроме того, добавьте -fPIC к команде выше:

make SHARED=0 CFLAGS='-static -std=gnu99 -static-libgcc -static-libstdc++ -fPIC'

, Как только Вы сделаны с компиляцией просто, восстанавливают исходный файл как это:

$ cd /usr/lib/gcc/x86_64-linux-gnu/4.8
$ sudo cp crtbeginT.orig.o crtbeginT.o
$ sudo rm crtbeginT.orig.o
7
ответ дан 17 November 2019 в 10:58

Можно получить предварительно скомпилированную версию с статичный - добираются

static-get -x coreutils
3
ответ дан 17 November 2019 в 10:58

Другие вопросы по тегам:

Похожие вопросы: