Portál AbcLinuxu, 8. května 2025 06:52

Dotaz: cross-kompilace openvpn-ldap nevidí libssl.so.0 a další

30.7.2014 11:32 neregistrovaný
cross-kompilace openvpn-ldap nevidí libssl.so.0 a další
Přečteno: 264×
Odpovědět | Admin
Zdravím.

Mám tu takový menší oříšek s kompilací ldap modulu pro openvpn. V síti používáme na routerech distribuci Leaf Bearing uClibc a na pár routerech máme openvpn pro vstup do sítě. Bylo by dobré používat pro přihlášení LDAP. Tento modul však není distribucí přímo podporován a proto se snažím sesmolit vlastní předpis buildtool.mk pro cross-kompilační nástroj buildtool používaný distribucí k vytváření balíčků.

Takto se volá configure
        CFLAGS="-Os -Wall" CC=$(TARGET_CC) ./configure \
            --host=$(GNU_TARGET_NAME) \
            --build=$(GNU_BUILD_NAME) \
            --with-openldap=$(BT_STAGING_DIR)/usr \
            --with-openvpn=$(BT_STAGING_DIR)/usr \
            --prefix=/usr );

#           --with-sysroot=$(BT_STAGING_DIR) \
A tu je výsledek:
configure:5262: checking for openldap
configure:5296: i486-unknown-linux-uclibc-gcc -o conftest -Os -Wall  -I/mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/include -I/mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/include -export-dynamic conftest.c  -lldap -llber -L/mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib >&5
conftest.c: In function 'main':
conftest.c:20:13: warning: unused variable 'fptr' [-Wunused-variable]
conftest.c:19:11: warning: unused variable 'flag' [-Wunused-variable]
/mnt/sdd5/dev/leaf-5.0.2/toolchain/i486-unknown-linux-uclibc/lib/gcc/i486-unknown-linux-uclibc/4.6.4/../../../../i486-unknown-linux-uclibc/bin/ld: warning: libgmp.so.10, needed by /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib/libldap.so, not found (try using -rpath or -rpath-link)
/mnt/sdd5/dev/leaf-5.0.2/toolchain/i486-unknown-linux-uclibc/lib/gcc/i486-unknown-linux-uclibc/4.6.4/../../../../i486-unknown-linux-uclibc/bin/ld: warning: libssl.so.1.0.0, needed by /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib/libldap.so, not found (try using -rpath or -rpath-link)
/mnt/sdd5/dev/leaf-5.0.2/toolchain/i486-unknown-linux-uclibc/lib/gcc/i486-unknown-linux-uclibc/4.6.4/../../../../i486-unknown-linux-uclibc/bin/ld: warning: libcrypto.so.1.0.0, needed by /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib/libldap.so, not found (try using -rpath or -rpath-link)
...
collect2: ld returned 1 exit status
configure:5302: $? = 1
configure:5344: result: no
configure:5349: error: Could not locate a working OpenLDAP library installation. Try --with-openldap=
Výsledek je trochu matoucí, protože
dev@KRAM /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib $ ldd libcrypto.so.1.0.0 
        linux-gate.so.1 (0xf7716000)
        libdl.so.0 => /lib64/libdl.so.0 (0xf74f9000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1 (0xf74de000)
        libc.so.0 => /lib64/libc.so.0 (0xf747c000)
        ld-uClibc.so.0 => /lib64/ld-uClibc.so.0 (0xf7474000)
        libc.so.6 => /lib32/libc.so.6 (0xf72cd000)
        /lib/ld-linux.so.2 (0xf7717000)

dev@KRAM /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib $ ldd libgmp.so.10
        linux-gate.so.1 (0xf76ee000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1 (0xf762a000)
        libc.so.0 => /lib64/libc.so.0 (0xf75c8000)
        libc.so.6 => /lib32/libc.so.6 (0xf7422000)
        ld-uClibc.so.0 => /lib64/ld-uClibc.so.0 (0xf741a000)
        /lib/ld-linux.so.2 (0xf76ef000)

dev@KRAM /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib $ ldd liblber-2.4.so.2
        linux-gate.so.1 (0xf77b5000)
        libgmp.so.10 => /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib/libgmp.so.10 (0xf773c000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1 (0xf76e3000)
        libc.so.0 => /lib64/libc.so.0 (0xf7681000)
        libc.so.6 => /lib32/libc.so.6 (0xf74da000)
        ld-uClibc.so.0 => /lib64/ld-uClibc.so.0 (0xf74d2000)
        /lib/ld-linux.so.2 (0xf77b6000)

dev@KRAM /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib $ ldd libldap.so 
        linux-gate.so.1 (0xf7710000)
        liblber-2.4.so.2 => /mnt/sdd5/dev/leaf-5.0.2/build/i486-unknown-linux-uclibc/openldap/usr/lib/liblber-2.4.so.2 (0xf76b1000)
        libgmp.so.10 => /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib/libgmp.so.10 (0xf7649000)
        libssl.so.1.0.0 => /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib/libssl.so.1.0.0 (0xf75dc000)
        libcrypto.so.1.0.0 => /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib/libcrypto.so.1.0.0 (0xf7405000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1 (0xf73ac000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf7391000)
        libc.so.0 => /lib64/libc.so.0 (0xf732f000)
        libdl.so.0 => /lib64/libdl.so.0 (0xf7329000)
        libc.so.6 => /lib32/libc.so.6 (0xf7183000)
        /lib/ld-linux.so.2 (0xf7711000)
        ld-uClibc.so.0 => /lib64/ld-uClibc.so.0 (0xf717b000)

dev@KRAM /mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib $ ldd libssl.so.1.0.0 
        linux-gate.so.1 (0xf77bb000)
        libcrypto.so.1.0.0 => /usr/lib32/libcrypto.so.1.0.0 (0xf7581000)
        libdl.so.0 => /lib64/libdl.so.0 (0xf757c000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1 (0xf7561000)
        libc.so.0 => /lib64/libc.so.0 (0xf74ff000)
        libdl.so.2 => /lib32/libdl.so.2 (0xf74f9000)
        libz.so.1 => /lib32/libz.so.1 (0xf74e2000)
        libc.so.6 => /lib32/libc.so.6 (0xf733c000)
        ld-uClibc.so.0 => /lib64/ld-uClibc.so.0 (0xf7334000)
        /lib/ld-linux.so.2 (0xf77bc000)
se zdá býti v pořádku. (Ne)funguje stejně s/bez ./configure --with-sysroot=

Napadá někoho, v čem dělám chybu? Já už nemám vúbec tušení. :-/

Předem díky za případné odpovědi a s pozdravem.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.7.2014 12:49 neregistrovaný
Rozbalit Rozbalit vše Re: cross-kompilace openvpn-ldap nevidí libssl.so.0 a další
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takhle ručně (s přidaným -rpath-link na konec testovací řádky) to funguje:
dev@KRAM /mnt/sdd5/dev/leaf-5.0.2 $ ./toolchain/i486-unknown-linux-uclibc/bin/i486-unknown-linux-uclibc-gcc -o conftest -Os -Wall  -I/mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/include -I/mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/include -export-dynamic conftest.c  -lldap -llber -L/mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib -Wl,-rpath-link=/mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib
Ale takhle ze skriptu už ne:
        LDFLAGS="$(LDFLAGS) -Wl,-rpath-link=/mnt/sdd5/dev/leaf-5.0.2/staging/i486-unknown-linux-uclibc/usr/lib" ./configure \
            --host=$(GNU_TARGET_NAME) \
            --build=$(GNU_BUILD_NAME) \
            --with-sysroot=$(BT_STAGING_DIR) \
            --with-openldap=$(BT_STAGING_DIR)/usr \
            --with-openvpn=$(BT_STAGING_DIR)/usr \
            --prefix=/usr );
Udělá z toho ten samej testovací řádek jako je v původním výpisu bez LDFLAGS.
30.7.2014 14:04 neregistrovaný
Rozbalit Rozbalit vše Re: cross-kompilace openvpn-ldap nevidí libssl.so.0 a další
Aha. Tak se zdá, že zafungovalo přidání té samé řádky pro CFLAGS. Tak trochu nerozumím, proč tomu tak je, ale jestli potom bude fungovat i make, zjistím až poté, co překompiluju základní toolchain s podporou gcc objective-c, který je vyžadováno v dalších testech. :-(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.