История изменений
Исправление teod0r, (текущая версия) :
стал пересобирать с поддержкой мультилиб по этой инструкции -> https://www.linuxfromscratch.org/~thomas/multilib/index.html
возникли вопросы: почему там есть пакеты кроме glibc, которые собираются с 32-битами (bzip2, file, libcap, util-linux, ..., наверное каждый второй), в то время как в CRUX из 32-битного — тока glibc? вобщем, я стал собирать из 32-битного тока glibc.
а gcc , binutils — с флагом --enable-multilib. и я не собирал совсем x32. это не правильно?
при сборке file (глава 8.10.) возникает ошибка:
CC fmtcheck.lo
readelf.c: In function 'doshn':
readelf.c:145:33: warning: 'cap64.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
145 | #define elf_getu64(swap, value) getu64(swap, value)
| ^~~~~~
readelf.c:1509:43: note: 'cap64' declared here
1509 | Elf64_Cap cap64;
| ^~~~~
readelf.c:144:33: warning: 'cap32.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
144 | #define elf_getu32(swap, value) getu32(swap, value)
| ^~~~~~
readelf.c:1508:43: note: 'cap32' declared here
1508 | Elf32_Cap cap32;
| ^~~~~
readelf.c:144:33: warning: 'cap32.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
144 | #define elf_getu32(swap, value) getu32(swap, value)
| ^~~~~~
readelf.c:1508:43: note: 'cap32' declared here
1508 | Elf32_Cap cap32;
| ^~~~~
readelf.c:145:33: warning: 'cap64.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
145 | #define elf_getu64(swap, value) getu64(swap, value)
| ^~~~~~
readelf.c:1509:43: note: 'cap64' declared here
1509 | Elf64_Cap cap64;
| ^~~~~
readelf.c:144:33: warning: 'cap32.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
144 | #define elf_getu32(swap, value) getu32(swap, value)
| ^~~~~~
readelf.c:1508:43: note: 'cap32' declared here
1508 | Elf32_Cap cap32;
| ^~~~~
readelf.c:144:33: warning: 'cap32.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
144 | #define elf_getu32(swap, value) getu32(swap, value)
| ^~~~~~
readelf.c:1508:43: note: 'cap32' declared here
1508 | Elf32_Cap cap32;
| ^~~~~
readelf.c:145:33: warning: 'cap64.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
145 | #define elf_getu64(swap, value) getu64(swap, value)
| ^~~~~~
readelf.c:1509:43: note: 'cap64' declared here
1509 | Elf64_Cap cap64;
| ^~~~~
readelf.c:145:33: warning: 'cap64.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
145 | #define elf_getu64(swap, value) getu64(swap, value)
| ^~~~~~
readelf.c:1509:43: note: 'cap64' declared here
1509 | Elf64_Cap cap64;
| ^~~~~
CCLD libmagic.la
/usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../lib/libz.a(zutil.o): warning: relocation against `z_errmsg' in read-only section `.text'
/usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../lib/libz.a(zutil.o): relocation R_X86_64_PC32 against symbol `z_errmsg' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:501: libmagic.la] Error 1
make[3]: Leaving directory '/build/file-5.43/src'
make[2]: *** [Makefile:382: all] Error 2
make[2]: Leaving directory '/build/file-5.43/src'
make[1]: *** [Makefile:464: all-recursive] Error 1
make[1]: Leaving directory '/build/file-5.43'
make: *** [Makefile:373: all] Error 2
пробовал собирать с -fPIC (CFLAGS), с --with-pic, с --disable-static, с --enable-shared, со всеми вместе — всё равно та же ошибка.
помоги пожалуйста разобраться почему ошибка. надо ли собирать 32-битное что-то кроме glibc? надо ли x32?
Исходная версия teod0r, :
стал пересобирать с поддержкой мультилиб по этой инструкции -> https://www.linuxfromscratch.org/~thomas/multilib/index.html
возникли вопросы: почему там есть пакеты кроме glibc, которые собираются с 32-битами (bzip2, file, libcap, util-linux, ..., наверное каждый второй), в то время как в CRUX из 32-битного — тока glibc? вобщем, я стал собирать из 32-битного тока glibc.
а gcc , binutils — с флагом --enable-multilib. и я не собирал совсем x32. это не правильно?
при сборке file (глава 8.10.) возникает ошибка:
CC fmtcheck.lo
readelf.c: In function 'doshn':
readelf.c:145:33: warning: 'cap64.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
145 | #define elf_getu64(swap, value) getu64(swap, value)
| ^~~~~~
readelf.c:1509:43: note: 'cap64' declared here
1509 | Elf64_Cap cap64;
| ^~~~~
readelf.c:144:33: warning: 'cap32.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
144 | #define elf_getu32(swap, value) getu32(swap, value)
| ^~~~~~
readelf.c:1508:43: note: 'cap32' declared here
1508 | Elf32_Cap cap32;
| ^~~~~
readelf.c:144:33: warning: 'cap32.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
144 | #define elf_getu32(swap, value) getu32(swap, value)
| ^~~~~~
readelf.c:1508:43: note: 'cap32' declared here
1508 | Elf32_Cap cap32;
| ^~~~~
readelf.c:145:33: warning: 'cap64.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
145 | #define elf_getu64(swap, value) getu64(swap, value)
| ^~~~~~
readelf.c:1509:43: note: 'cap64' declared here
1509 | Elf64_Cap cap64;
| ^~~~~
readelf.c:144:33: warning: 'cap32.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
144 | #define elf_getu32(swap, value) getu32(swap, value)
| ^~~~~~
readelf.c:1508:43: note: 'cap32' declared here
1508 | Elf32_Cap cap32;
| ^~~~~
readelf.c:144:33: warning: 'cap32.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
144 | #define elf_getu32(swap, value) getu32(swap, value)
| ^~~~~~
readelf.c:1508:43: note: 'cap32' declared here
1508 | Elf32_Cap cap32;
| ^~~~~
readelf.c:145:33: warning: 'cap64.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
145 | #define elf_getu64(swap, value) getu64(swap, value)
| ^~~~~~
readelf.c:1509:43: note: 'cap64' declared here
1509 | Elf64_Cap cap64;
| ^~~~~
readelf.c:145:33: warning: 'cap64.c_un.c_val' may be used uninitialized [-Wmaybe-uninitialized]
145 | #define elf_getu64(swap, value) getu64(swap, value)
| ^~~~~~
readelf.c:1509:43: note: 'cap64' declared here
1509 | Elf64_Cap cap64;
| ^~~~~
CCLD libmagic.la
/usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../lib/libz.a(zutil.o): warning: relocation against `z_errmsg' in read-only section `.text'
/usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: /usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../lib/libz.a(zutil.o): relocation R_X86_64_PC32 against symbol `z_errmsg' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../x86_64-lfs-linux-gnu/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:501: libmagic.la] Error 1
make[3]: Leaving directory '/build/file-5.43/src'
make[2]: *** [Makefile:382: all] Error 2
make[2]: Leaving directory '/build/file-5.43/src'
make[1]: *** [Makefile:464: all-recursive] Error 1
make[1]: Leaving directory '/build/file-5.43'
make: *** [Makefile:373: all] Error 2
помоги пожалуйста разобраться почему ошибка. надо ли собирать 32-битное что-то кроме glibc? надо ли x32?