Strona 1 z 1

kompilacja mariadb bez zależności od gcc

: 30 cze 2017, 12:39
autor: akasei
Staram się skompilować MariaDB 10.x, ale nie wiem jak wyłączyć zależności od GCC przez co do prawidłowego działania serwera mysql musi być zainstalowany pakiet GCC :evil:

Ktoś wie jaką flagę dodać do CMake?

Kod: Zaznacz cały

ves ~/usr/bin $ ldd mysql
        linux-vdso.so.1 (0x00007ffd7dd03000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f1298f2c000)
        libz.so.1 => /lib/libz.so.1 (0x00007f1298d15000)
        libdl.so.2 => /lib/libdl.so.2 (0x00007f1298b11000)
        libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007f129889e000)
        libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007f1298449000)
        libncursesw.so.6 => /lib/libncursesw.so.6 (0x00007f12981df000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f1297e5f000)
        libm.so.6 => /lib/libm.so.6 (0x00007f1297b4c000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f1297935000)
        libc.so.6 => /lib/libc.so.6 (0x00007f1297591000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f129914a000)

Re: kompilacja mariadb bez zależności od gcc

: 01 lip 2017, 00:46
autor: ka_o_3991
Dlaczego chcesz kompilować zamiast zainstalować z repozytoriów?

Re: kompilacja mariadb bez zależności od gcc

: 01 lip 2017, 22:00
autor: jacekalex
Skompilować bez kompilatora możesz własne gacie, ale na pewno nie program napisany w C/C++, jak serwer MariaDB.

Z resztą jak znasz polecenie ldd to zobacz to:
ldd `which mysqld`
linux-vdso.so.1 (0x00007ffc96fef000)
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f8046fde000)
libodbc.so.2 => /usr/lib64/libodbc.so.2 (0x00007f8046d6c000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f8046b69000)
libz.so.1 => /lib64/libz.so.1 (0x00007f8046950000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f80466dc000)
libjemalloc.so.1 => /usr/lib64/libjemalloc.so.1 (0x00007f80464ae000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f8046276000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8046059000)
libssl.so.1.0.0 => /usr/lib64/libssl.so.1.0.0 (0x00007f8045de2000)
libcrypto.so.1.0.0 => /usr/lib64/libcrypto.so.1.0.0 (0x00007f8045962000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f804575e000)
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/libstdc++.so.6 (0x00007f8045335000)
libm.so.6 => /lib64/libm.so.6 (0x00007f8045030000)
libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/libgcc_s.so.1 (0x00007f8044e19000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8044a76000)
libicuuc.so.58 => /usr/lib64/libicuuc.so.58 (0x00007f80446a3000)
libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007f8044498000)
/lib64/ld-linux-x86-64.so.2 (0x00007f804736a000)
libicudata.so.58 => /usr/lib64/libicudata.so.58 (0x00007f8042996000)
Ciekawe, co Ci przypominają wytłuszczone nazwy bibliotek? :twisted:

Z resztą GCC i tak masz w systemie w bibliotekach libstdc++.so.6 i libgcc_s.so.1,
jeśli nie chcesz w ogóle GCC w systemie, to będziesz chyba musiał te biblioteki usunąć. :twisted:

PS:
FreeBSD 11 podobno nie ma już obowiązkowo GCC, bo bazuje na Clangu, ale nie wiem, czy serwer MariaDB Clangiem skompilujesz. :pt36:

To by było na tyle
:craz:

Re: kompilacja mariadb bez zależności od gcc

: 03 lip 2017, 08:05
autor: akasei
ka_o_3991 pisze:Dlaczego chcesz kompilować zamiast zainstalować z repozytoriów?
To jest LFS, tu nie ma repozytoriów.
jacekalex pisze:Skompilować bez kompilatora możesz własne gacie, ale na pewno nie program napisany w C/C++, jak serwer MariaDB.
Uno: ani jeden program u mnie w systemie (acl attr bash bzip2 coreutils dhcpcd diffutils e2fsprogs eudev findutils gawk glibc grep grub gzip iana-etc inetutils iproute2 kbd kmod less linux nano ncurses openssl procps-ng psmisc readline sed shadow syslogd sysvinit tar util-linux wget xz zlib) nie korzysta z GCC (chyba, że w tym momencie potrzebuje coś skompilować).

Duo: "Skompilować bez kompilatora" <> "wyłączyć zależności" czytaj ze zrozumieniem.

PS: pozostaje przy PostgreSQL, tam nie wymaga GCC w systemie.

Re: kompilacja mariadb bez zależności od gcc

: 03 lip 2017, 12:56
autor: jacekalex
MariaDB też nie wymaga polecenia gcc, tylko bibliotek libstdc++.so.6 i libgcc_s.so.1, które są w praktyce częścią kompilatora gcc.

To, że w Debianie te biblioteki są w debianokształtnych wydzielone jako osobne pakiety,niczego tutaj nie zmienia.
To, czy masz polecenie gcc w systemie czy nie, nie ma znaczenia, bo gcc siedzi głównie w tych dwóch bibliotekach.

W przypadku Postgresa jest taka sama sytuacja jak w Mariadb:

Kod: Zaznacz cały

ldd /usr/lib64/postgresql-9.5/bin/postmaster
	........
	libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/libstdc++.so.6 (0x00007f3b65f00000)
	libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/libgcc_s.so.1 (0x00007f3b65ce9000)
Jeśli natomiast w LFS spróbujesz zrobić aktualizację bezpieczeństwa Postgresa czy czegokolwiek innego,
to niestety bez gcc tego w LFS nie zrobisz, chyba że wykombinujesz jakiś inny kompilator jak Clang, EKOPath czy ICC.

Re: kompilacja mariadb bez zależności od gcc

: 03 lip 2017, 16:00
autor: enedil
Powiedz szczerze, jakiej libc używasz?

Poza tym, zainteresuj się flagąi `--static` do gcc.