Linker error when building 3.8.0-rc4 on Linux

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Linker error when building 3.8.0-rc4 on Linux

ウルヰ
Trying to build CMake 3.8.0-rc4 from source on Ubuntu 16.10 gives the
following output:

$ make
[  2%] Built target cmsys
[  3%] Built target cmsysTestDynload
[  4%] Built target cmsys_c
[  4%] Built target cmsysTestProcess
[  4%] Built target cmsysTestSharedForward
[  5%] Built target cmsysTestsC
[  6%] Built target cmsysTestsCxx
[  6%] Built target testConsoleBufChild
[  7%] Built target kwiml_test
[  8%] Built target cmlibrhash
[  9%] Built target cmzlib
[ 24%] Built target cmcurl
[ 24%] Built target LIBCURL
[ 24%] Built target cmcompress
[ 24%] Built target cmexpat
[ 25%] Built target cmbzip2
[ 33%] Built target cmliblzma
[ 46%] Built target cmlibarchive
[ 47%] Built target cmjsoncpp
[ 50%] Built target cmlibuv
[ 55%] Built target cmForm
[ 83%] Built target CMakeLib
[ 84%] Built target CMakeServerLib
[ 86%] Built target CPackLib
[ 92%] Built target CTestLib
[ 92%] Linking CXX executable ../bin/ccmake
../Utilities/cmlibarchive/libarchive/libcmlibarchive.a(archive_hmac.c.o):
In function `__hmac_sha1_init':
archive_hmac.c:(.text+0x25): undefined reference to `HMAC_CTX_new'
../Utilities/cmlibarchive/libarchive/libcmlibarchive.a(archive_hmac.c.o):
In function `__hmac_sha1_cleanup':
archive_hmac.c:(.text+0x12d): undefined reference to `HMAC_CTX_free'
collect2: error: ld returned 1 exit status
Source/CMakeFiles/ccmake.dir/build.make:422: recipe for target
'bin/ccmake' failed
make[2]: *** [bin/ccmake] Error 1
CMakeFiles/Makefile2:2314: recipe for target
'Source/CMakeFiles/ccmake.dir/all' failed
make[1]: *** [Source/CMakeFiles/ccmake.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

Is this a bug with the build configuration or have I forgotten to do
something I need to do?

Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

ウルヰ
Can confirm that this happens with the latest source from Github as well.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

Nils Gladitz-2
In reply to this post by ウルヰ
On 03/31/2017 07:46 AM, ウルヰ wrote:

> ../Utilities/cmlibarchive/libarchive/libcmlibarchive.a(archive_hmac.c.o):
> In function `__hmac_sha1_init':
> archive_hmac.c:(.text+0x25): undefined reference to `HMAC_CTX_new'
> ../Utilities/cmlibarchive/libarchive/libcmlibarchive.a(archive_hmac.c.o):
> In function `__hmac_sha1_cleanup':
> archive_hmac.c:(.text+0x12d): undefined reference to `HMAC_CTX_free'
> collect2: error: ld returned 1 exit status
> Source/CMakeFiles/ccmake.dir/build.make:422: recipe for target
> 'bin/ccmake' failed
> make[2]: *** [bin/ccmake] Error 1
> CMakeFiles/Makefile2:2314: recipe for target
> 'Source/CMakeFiles/ccmake.dir/all' failed
> make[1]: *** [Source/CMakeFiles/ccmake.dir/all] Error 2
> Makefile:162: recipe for target 'all' failed
> make: *** [all] Error 2
>
> Is this a bug with the build configuration or have I forgotten to do
> something I need to do?

According to the OpenSSL documentation HMAC_CTX_new() and
HMAC_CTX_free() were introduced in 1.1.0.
Presumably your OpenSSL version is older than that and disabling OpenSSL
(presuming you don't need it) or building against a newer version should
help.

To disable OpenSSL e.g. "cmake ... -DCMAKE_USE_OPENSSL=false" or
"bootstrap ... --  -DCMAKE_USE_OPENSSL=false".
To point CMake at a custom OpenSSL installation instead setting the
CMAKE_PREFIX_PATH environment to the installation should work.

Nils
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

ウルヰ
> To disable OpenSSL e.g. "cmake ... -DCMAKE_USE_OPENSSL=false" or "bootstrap
> ... --  -DCMAKE_USE_OPENSSL=false".

What would be the ramifications of building CMake without OpenSSL?
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

Nils Gladitz-2
On 03/31/2017 09:04 AM, ウルヰ wrote:

>> To disable OpenSSL e.g. "cmake ... -DCMAKE_USE_OPENSSL=false" or "bootstrap
>> ... --  -DCMAKE_USE_OPENSSL=false".
> What would be the ramifications of building CMake without OpenSSL?

As far as I am aware it would mean no "https://" support in curl which
would mean no "https://" support in e.g. file(DOWNLOAD) and CTest
submissions.

Nils
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

Alan W. Irwin
On 2017-03-31 09:12+0200 Nils Gladitz wrote:

> On 03/31/2017 09:04 AM, ウルヰ wrote:
>
>>> To disable OpenSSL e.g. "cmake ... -DCMAKE_USE_OPENSSL=false" or
>>> "bootstrap
>>> ... --  -DCMAKE_USE_OPENSSL=false".
>> What would be the ramifications of building CMake without OpenSSL?
>
> As far as I am aware it would mean no "https://" support in curl which would
> mean no "https://" support in e.g. file(DOWNLOAD) and CTest submissions.

Hi Nils:

And use of ExternalProject_Add, etc.  In other words, this is a pretty
crippling restriction for users with Linux distributions (such as the
quite recent Ubuntu 2016.10 of the original poster) that do not yet
give access to libssl version 1.1.0 (the oldest version of libssl
where HMAC_CTX_new() and HMAC_CTX_free() are available according to
your previous post).

@ The original poster, ウルヰ <[hidden email]> (whose real name I do not know because he obviously
did not use the normal UTF-8 encoding for his mail address name):

I suggest you try the experiment of using the system version of
libcurl instead (which also supplies SSL capability). For example, my
Linux distribution is Debian Stable which only installs libssl 1.0.1.
And for that case when I tried the bootstrap method with the
--system-curl option (the usual way I build cmake), I do not confirm
your linking issue.  So my expectation is you will also avoid that
linking issue on Ubuntu 2016.10 if you use that bootstrap option or a
similar system libcurl option for the non-bootstrap case.

@Nils:

Even if the original poster finds the suggested workaround (of using
the system version of libcurl rather than system version of
libopenssl) works to provide key CMake SSL functionality, on general
principles (because Linux distribution support for libssl version
1.1.0 is obviously not widespread at the current time), I would
strongly suggest CMake developers drop use of HMAC_CTX_new() and
HMAC_CTX_free() throughout CMake for the final version of CMake-3.8.0.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

Nils Gladitz-2
On 03/31/2017 11:54 AM, Alan W. Irwin wrote:

> Hi Nils:
>
> And use of ExternalProject_Add, etc.  In other words, this is a pretty
> crippling restriction for users with Linux distributions (such as the
> quite recent Ubuntu 2016.10 of the original poster) that do not yet
> give access to libssl version 1.1.0 (the oldest version of libssl
> where HMAC_CTX_new() and HMAC_CTX_free() are available according to
> your previous post).

Strangely enough I have no issue on Ubuntu 16.04 with the system default
installation of OpenSSL.

What I missed in the original post is that the error comes from
libarchive rather than libcurl.
But libarchive itself also seems to provide inline definitions of the
missing functions in
Utilities/cmlibarchive/libarchive/archive_openssl_hmac_private.h for
OpenSSL < 1.1.

I can't tell why the inline definitions aren't used on the original
posters system.
Perhaps there is a mismatch between OpenSSL headers and libraries?


Nils
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

Alan W. Irwin
On 2017-03-31 14:00+0200 Nils Gladitz wrote:

> On 03/31/2017 11:54 AM, Alan W. Irwin wrote:
>
>> Hi Nils:
>>
>> And use of ExternalProject_Add, etc.  In other words, this is a pretty
>> crippling restriction for users with Linux distributions (such as the
>> quite recent Ubuntu 2016.10 of the original poster) that do not yet
>> give access to libssl version 1.1.0 (the oldest version of libssl
>> where HMAC_CTX_new() and HMAC_CTX_free() are available according to
>> your previous post).
>
> Strangely enough I have no issue on Ubuntu 16.04 with the system default
> installation of OpenSSL.
>
> What I missed in the original post is that the error comes from libarchive
> rather than libcurl.
> But libarchive itself also seems to provide inline definitions of the missing
> functions in Utilities/cmlibarchive/libarchive/archive_openssl_hmac_private.h
> for OpenSSL < 1.1.
>
> I can't tell why the inline definitions aren't used on the original posters
> system.
> Perhaps there is a mismatch between OpenSSL headers and libraries?

Hi Nils:

Strictly from what you have said (since my result bypassed OpenSSL
completely by using libcurl for SSL functionality), it appears to me
that CMake (or libarchive?) developers have attempted to adjust for
the case where OpenSSL < 1.1, and that adjustment works for you with
Ubuntu 16.04, but does not work for the O.P. with Ubuntu 16.10.

Ultimately, of course, it is strictly up to the CMake developers how
carefully they respond to reports of OpenSSL issues, but from my
perspective CMake SSL functionality is important because of the widely
used ExternalProject module that depends on that functionality.

Therefore, from the sidelines I am encouraging you guys to be
extraordinarily careful about this particular issue; e.g., by
attempting to to confirm this CMake-3.8.0-rc4 issue independently for
Ubuntu 16.10.

Further to such confirmation does the CMake dashboard already test
system OpenSSL for the Ubuntu 16.10 case or does one of the CMake
developers have ready access to a Ubuntu 16.10 system so they can
attempt to confirm the issue?

That is the end of my ideas for helping you to debug this issue so
I am likely bowing out of further discussion in this thread.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

Nils Gladitz-2
On 31.03.2017 22:44, Alan W. Irwin wrote:
>
> Therefore, from the sidelines I am encouraging you guys to be
> extraordinarily careful about this particular issue; e.g., by
> attempting to to confirm this CMake-3.8.0-rc4 issue independently for
> Ubuntu 16.10.


FWIW I tried reproducing it from within an Ubuntu 16.10 Docker container
and it worked there as-is.


Nils

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Linker error when building 3.8.0-rc4 on Linux

ウルヰ
> I suggest you try the experiment of using the system version of
> libcurl instead (which also supplies SSL capability). For example, my
> Linux distribution is Debian Stable which only installs libssl 1.0.1.
> And for that case when I tried the bootstrap method with the
> --system-curl option (the usual way I build cmake), I do not confirm
> your linking issue.  So my expectation is you will also avoid that
> linking issue on Ubuntu 2016.10 if you use that bootstrap option or a
> similar system libcurl option for the non-bootstrap case.

I tried running ./bootstrap with the --system-curl option, and I see
a different error:

[ 93%] Linking CXX executable ../bin/ccmake
/usr/bin/ld: ../Utilities/cmlibarchive/libarchive/libcmlibarchive.a(archive_cryptor.c.o):
undefined reference to symbol 'EVP_aes_256_ecb@@OPENSSL_1.0.0'
//lib/x86_64-linux-gnu/libcrypto.so.1.0.0: error adding symbols: DSO
missing from command line
collect2: error: ld returned 1 exit status
Source/CMakeFiles/ccmake.dir/build.make:420: recipe for target
'bin/ccmake' failed
make[2]: *** [bin/ccmake] Error 1
CMakeFiles/Makefile2:2135: recipe for target
'Source/CMakeFiles/ccmake.dir/all' failed
make[1]: *** [Source/CMakeFiles/ccmake.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

So the problem is likely on my end.
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Loading...