Archived

This forum has been archived. Please start a new discussion on GitHub.

Build ICE with OpenSSL 1.0.1g

Hello,

Because of the heartbeat leaking issue, we would like to use ICE 3.5.1 with OpenSSL 1.0.1g.

However, when I try to build ICE with this version of OpenSSL, it fails :

g++ -Wl,--enable-new-dtags -rdynamic -m64 -Wall -Werror -pthread -fPIC -O2 -DNDEBUG -L../../lib -o ../../bin/transformdb TransformAnalyzer.o TransformVisitor.o Transformer.o transformdb.o ../FreezeScript/Grammar.o Scanner.o AssignVisitor.o Data.o Error.o Functions.o Exception.o Parser.o Print.o Util.o -lSlice -lIceXML -lFreeze -lIce -lIceUtil -ldb_cxx
../../lib/libFreeze.so: undefined reference to `Db::set_partition_dirs(char const**)'
../../lib/libFreeze.so: undefined reference to `Db::set_heapsize(unsigned int, unsigned int)'
../../lib/libFreeze.so: undefined reference to `Db::get_append_recno(int (**)(Db*, Dbt*, unsigned int))'
../../lib/libFreeze.so: undefined reference to `Db::get_heap_regionsize(unsigned int*)'
../../lib/libFreeze.so: undefined reference to `Db::get_partition_callback(unsigned int*, unsigned int (**)(Db*, Dbt*))'
../../lib/libFreeze.so: undefined reference to `Db::set_partition(unsigned int, Dbt*, unsigned int (*)(Db*, Dbt*))'
../../lib/libFreeze.so: undefined reference to `Db::associate_foreign(Db*, int (*)(Db*, Dbt const*, Dbt*, Dbt const*, int*), unsigned int)'
../../lib/libFreeze.so: undefined reference to `Db::get_create_dir(char const**)'
../../lib/libFreeze.so: undefined reference to `Db::get_h_compare(int (**)(Db*, Dbt const*, Dbt const*))'
../../lib/libFreeze.so: undefined reference to `Db::set_heap_regionsize(unsigned int)'
../../lib/libFreeze.so: undefined reference to `Db::get_h_hash(unsigned int (**)(Db*, void const*, unsigned int))'
../../lib/libFreeze.so: undefined reference to `Db::get_errcall(void (**)(DbEnv const*, char const*, char const*))'
../../lib/libFreeze.so: undefined reference to `Db::get_bt_compress(int (**)(Db*, Dbt const*, Dbt const*, Dbt const*, Dbt const*, Dbt*), int (**)(Db*, Dbt const*, Dbt const*, Dbt*, Dbt*, Dbt*))'
../../lib/libFreeze.so: undefined reference to `Db::get_bt_compare(int (**)(Db*, Dbt const*, Dbt const*))'
../../lib/libFreeze.so: undefined reference to `Db::get_alloc(void* (**)(unsigned long), void* (**)(void*, unsigned long), void (**)(void*))'
../../lib/libFreeze.so: undefined reference to `Db::sort_multiple(Dbt*, Dbt*, unsigned int)'
../../lib/libFreeze.so: undefined reference to `Db::set_bt_compress(int (*)(Db*, Dbt const*, Dbt const*, Dbt const*, Dbt const*, Dbt*), int (*)(Db*, Dbt const*, Dbt const*, Dbt*, Dbt*, Dbt*))'
../../lib/libFreeze.so: undefined reference to `Db::set_create_dir(char const*)'
../../lib/libFreeze.so: undefined reference to `Db::set_lk_exclusive(bool)'
../../lib/libFreeze.so: undefined reference to `Db::get_bt_prefix(unsigned long (**)(Db*, Dbt const*, Dbt const*))'
../../lib/libFreeze.so: undefined reference to `Db::get_heapsize(unsigned int*, unsigned int*)'
../../lib/libFreeze.so: undefined reference to `Db::get_partition_keys(unsigned int*, Dbt**)'
../../lib/libFreeze.so: undefined reference to `Db::get_partition_dirs(char const***)'
../../lib/libFreeze.so: undefined reference to `Db::get_lk_exclusive(bool*, bool*)'
../../lib/libFreeze.so: undefined reference to `Db::get_feedback(void (**)(Db*, int, int))'
../../lib/libFreeze.so: undefined reference to `Db::get_msgcall(void (**)(DbEnv const*, char const*))'
../../lib/libFreeze.so: undefined reference to `Db::get_dup_compare(int (**)(Db*, Dbt const*, Dbt const*))'
collect2: ld returned 1 exit status

I didn't had issues building ICE with previous OpenSSL versions.
Is there a workaround ?

Thanks

Philippe

Comments

  • mes
    mes California
    Hi,

    Welcome to the forum.

    On Linux, Ice links with the system's OpenSSL shared libraries, so there's no reason to rebuild Ice. All you need to do is install the updated OpenSSL packages. You can verify that Ice is using the correct shared libraries using the ldd utility.

    Note that your build failure has nothing to do with OpenSSL. Rather, it looks like a problem with your Berkeley DB installation. If you still want to rebuild Ice, I recommend that you download our "third-party" source archive, or install our Berkeley DB binary packages.

    Regards,
    Mark
  • Hello Mark,

    I cannot simply install new packages because we do not has the root privileges.

    I strongly agree the issue does not look related to OpenSSL. It surely must be my mistake. I'll re-do my build carefully.

    Thanks for your help !

    Philippe
  • mes
    mes California
    Hi,

    You haven't mentioned which operating system you're using. The "heartbleed" bug only affects OpenSSL 1.0.1, and not 0.9.8 or 1.0.0. Have you checked to see if the default OpenSSL packages on your system are affected by the bug?

    When rebuilding Ice with a non-default OpenSSL installation, make sure you set the OPENSSL_HOME variable, either in your environment or when invoking make. See cpp/config/Make.rules for details.

    Note that if you can't upgrade the system packages, you can work around it by setting your LD_LIBRARY_PATH to point to the directory containing the new OpenSSL libraries.

    Mark