Dear Matthias Klose, you wrote:
> 
> I can't see that. could you attach your build log?

Maybe not the full log (if you think I should I'll do so, but the initial
phase merely consists of compiling the sources. I've added one compilation to
show what's going on:

The compilation:
    g++ --std=c++0x -c -o pattern/oa/51pattern1.o -isystem tmp -Wall -O2
        pattern/pattern1.cc

Static lib construction:

    ar cru tmp/lib/libbobcat.a */oa/*.o
    ranlib tmp/lib/libbobcat.a
    rm */oa/*.o

Dynamic lib construction:

Compilation:
    g++ --std=c++0x -c -o pattern/os/51pattern1.o -isystem tmp -Wall -O2 -fPIC
    pattern/pattern1.cc

Library construction:
    gcc -Xlinker --as-needed -shared -Wl,-z,def,-soname,libbobcat.so.2 
        */os/*.o -lmilter -L/usr/lib/libmilter -lX11 -lssl -lreadline -o
        tmp/lib/libbobcat.so.2.10.02
    chmod -x libbobcat.so.2.10.02
    ln -sf libbobcat.so.2.10.02 libbobcat.so.2
    ln -sf libbobcat.so.2 libbobcat.so

ldd reports as expected:

    ldd tmp/lib/libbobcat.so.2
        linux-gate.so.1 =>  (0xb7841000)
        libmilter.so.1.0.1 => /usr/lib/libmilter.so.1.0.1 (0xb7797000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb767a000)
        libreadline.so.6 => /lib/libreadline.so.6 (0xb7644000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7628000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb74e2000)
        libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb74c9000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb74b0000)
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb74ab000)
        libncurses.so.5 => /lib/libncurses.so.5 (0xb7471000)
        /lib/ld-linux.so.2 (0xb7842000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xb746e000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7469000)


> the patch does apply, but I still see the wrong order on the command
> line. Either I'm doing something stupid, or I patch the wrong place.

Please advise on the above dynamic lib. construction command. To me it looks
as though the libraries follow the object files.

Now the lcgen construction:

g++ --std=c++0x -c -o lc/lcgen/o/999version.o -isystem tmp -Wall -O2 
lc/lcgen/version.cc
g++ --std=c++0x -c -o lc/lcgen/o/999usage.o -isystem tmp -Wall -O2 
lc/lcgen/usage.cc
g++ --std=c++0x -c -o lc/lcgen/o/999typelist.o -isystem tmp -Wall -O2 
lc/lcgen/typelist.cc
(etc, all sources are compiled)

rm -f lc/lcgen/o/999main.o
g++ --std=c++0x -isystem tmp -o tmp/bin/bobcatlcgen lc/lcgen/main.cc 
lc/lcgen/o/* -lbobcat -Ltmp/lib/
tmp/lib//libbobcat.so: undefined reference to `OpenSSL_add_all_digests'
tmp/lib//libbobcat.so: undefined reference to `BN_init'
tmp/lib//libbobcat.so: undefined reference to `BN_num_bits'
tmp/lib//libbobcat.so: undefined reference to `BN_exp'
tmp/lib//libbobcat.so: undefined reference to `HMAC_CTX_init'
tmp/lib//libbobcat.so: undefined reference to `BN_bn2dec'
tmp/lib//libbobcat.so: undefined reference to `EVP_CIPHER_CTX_block_size'
(etc, more unresolved refs follow)


Interestingly, however, the following command *did* succeed:

g++ --std=c++0x -isystem tmp -o tmp/bin/bobcatlcgen lc/lcgen/main.cc 
lc/lcgen/o/* -L/usr/lib -lbobcat -Ltmp/lib/

I added the path to where the ssl lib (etc) lives: -L/usr/lib. Why this works
I don't know. According to ld's man page the -L is added to the ld search
path, and the libs found by ld by default, as shown by ldconfig -p, include
/usr/lib. 

Maybe the additional -L flag provides a hint?

If you think I should provide more info, please let me know.

Cheers,

-- 
    Frank B. Brokken
    Center for Information Technology, University of Groningen
    (+31) 50 363 9281 
    Public PGP key: http://pgp.surfnet.nl
    Key Fingerprint: DF32 13DE B156 7732 E65E  3B4D 7DB2 A8BE EAE4 D8AA



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to