NI Linux Real-Time Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

error while loading shared libraries: libcrypto.so.1.0.0

Solved!
Go to solution

I have application written in C and I have added some message digest functions using openssl and libcrypto. I have linked the library in the Eclipse project via "-lcrypto" and "#include <openssl/evp.h>" in the C file. The application builds fine. However when I deploy and start the application on the cRIO, I am getting the following error at launch:

 

"error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory"

 

I see that my cRIO has libcrypto.so.1.0.2 located in /usr/bin/

 

I assume I have some version issue. I would have thought 1.0.2 would be enough, does my application specifically call 1.0.0 without me explicitly calling it?

 

admin@NI-cRIO-9030-01C59BCD:/usr/lib/x86_64-linux-gnu/nisysapi# opkg info openssl
Package: openssl
Version: 1.0.2k-r0.40
Depends: libc6 (>= 2.24), libcrypto1.0.2 (>= 1.0.2k), libssl1.0.2 (>= 1.0.2k), openssl-conf
Status: install ok installed
Architecture: core2-64
Installed-Size: 567978
Installed-Time: 1537439537

 

 

Ok, so it looks like my includes in Eclipse points to C:\build\17.0\lib\, which has libcrypto.so.1.0.0.

My cRIO feed is from 18.5, libcrypto.so.1.0.0 is not in //lib. I did find it here /usr/lib/libcrypto.so.1.0.2 Is this a linking/path issue?

 

Edit:

I tried creating a symbolic link and now I get this...

 

admin@NI-cRIO-9030-01C59BCD:/usr/lib# ln -s /usr/lib/libcrypto.so.1.0.2 /lib/libcrypto.so.1.0.0
admin@NI-cRIO-9030-01C59BCD:/usr/lib# /usr/local/bin/app
/usr/local/bin/app: /lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /usr/local/bin/app)

Which looks like I need to either install openssl1.0.0 on the cRIO or somehow load openssl1.0.2 on my PC and include in the project build?

 

Edit:

 

I downgraded to 2017 drivers and now I have this:

admin@NI-cRIO-9030-01C59BCD:/usr/lib# find / -name libcrypto.so*
/usr/lib/libcrypto.so.1.0.0
admin@NI-cRIO-9030-01C59BCD:/usr/lib# opkg info openssl
Package: openssl
Version: 1.0.2h-r0.121
Depends: libssl1.0.0 (>= 1.0.2h), libc6 (>= 2.23), libcrypto1.0.0 (>= 1.0.2h)
Status: install ok installed
Section: libs/network
Architecture: core2-64
Maintainer: NI Linux Real-Time Maintainers <nilrt@ni.com>
MD5Sum: 2ad8c9cc88bee78ee182e1f89a0a5a02
Size: 233870
Filename: openssl_1.0.2h-r0.121_core2-64.ipk
Source: http://www.openssl.org/source/openssl-1.0.2h.tar.gz file://find.pl;subdir=openssl-1.0.2h/util/ file://run-ptest file://configure-targets.patch file://shared-libs.patch file://oe-ldflags.patch file://engines-install-in-libdir-ssl.patch file://debian1.0.2/block_diginotar.patch file://debian1.0.2/block_digicert_malaysia.patch file://debian/ca.patch file://debian/c_rehash-compat.patch file://debian/debian-targets.patch file://debian/man-dir.patch file://debian/man-section.patch file://debian/no-rpath.patch file://debian/no-symbolic.patch file://debian1.0.2/version-script.patch file://openssl_fix_for_x32.patch file://fix-cipher-des-ede3-cfb1.patch file://openssl-avoid-NULL-pointer-dereference-in-EVP_DigestInit_ex.patch file://openssl-fix-des.pod-error.patch file://Makefiles-ptest.patch file://ptest-deps.patch file://openssl-1.0.2a-x32-asm.patch file://ptest_makefile_deps.patch file://configure-musl-target.patch file://parallel.patch file://CVE-2016-2178.patch file://CVE-2016-2179.patch file://CVE-2016-2180.patch file://CVE-2016-2181_p1.patch file://CVE-2016-2181_p2.patch file://CVE-2016-2181_p3.patch file://CVE-2016-2182.patch file://CVE-2016-6302.patch file://CVE-2016-6303.patch file://CVE-2016-6304.patch file://CVE-2016-6306.patch file://0001-crypto-rand-Fix-VxWorks-platform-detection-in-randfi.patch file://0002-crypto-ts-Implement-def_time_cb-on-VxWorks.patch file://0003-ssl-Implement-get_current_time-on-VxWorks.patch file://0004-crypto-bio-Implement-get_current_time-on-VxWorks.patch file://0005-crypto-Implement-OpenSSLDie-as-abort-on-Phar-Lap-ETS.patch file://0006-crypto-Remove-unsupported-headers-in-cryptlib.c-on-P.patch file://0007-crypto-rand-Disable-unsupported-readscreen-on-Phar-L.patch file://0008-crypto-rand-Don-t-include-unsupported-Windows-header.patch file://0009-rand_win.c-Stub-RAND_poll-on-Phar-Lap-ETS.patch file://0010-crypto-des-Disable-WIN_CONSOLE_BUG-hack-on-Phar-Lap-.patch file://0011-crypto-ui-Disable-WIN_CONSOLE_BUG-hack-on-Phar-Lap-E.patch file://0012-crypto-bio-Disable-xopenlog-xcloselog-on-Phar-Lap-ET.patch file://0013-crypto-Use-i686-instead-of-i486-in-MASM-script.patch file://0014-perlasm-x86masm.pl-make-it-work.patch
Description: Secure Socket Layer Secure Socket Layer (SSL) binary and related
cryptographic tools.
Installed-Size: 553336
Installed-Time: 1489192102

admin@NI-cRIO-9030-01C59BCD:/usr/lib# /usr/local/bin/eclipse_backend
/usr/local/bin/eclipse_backend: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /usr/local/bin/eclipse_backend)

Seems like I am closer with now having "libcrypto.so.1.0.0" but something still wants OpenSSL 1.0.0. Looks like I have some mismatch.

 

I am seeing that NI has moved and Linux RT developement from Eclipse (<2017) to Visual Studio. IF there is some package issue in NI's feeds for OpenSSL that is causing this issue, do I need to move to VS?

Doug Ferguson

www.southerndaqsolutions.com
0 Kudos
Message 1 of 11
(14,941 Views)

Hey Doug,

Can you rule out any search path issues with ldd? You can install it with opkg (I think the package is literally just ldd) and try running it on your application with and without the -v flag. That should give you an idea of what's missing and where it is looking for linked dependencies. 

Admittedly might just point at OpenSSL as you've already noted, but it's a good check to make. 

Charlie J.
National Instruments
0 Kudos
Message 2 of 11
(14,861 Views)
admin@NI-cRIO-9030-01C59BCD:/usr/local/bin# ldd -v /usr/local/bin/eclipse_backend
/usr/local/bin/eclipse_backend: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /usr/local/bin/eclipse_backend)
linux-vdso.so.1 (0x00007fffe47b5000)
libm.so.6 => /lib/libm.so.6 (0x00007fa5c5f77000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007fa5c5b2e000)
librt.so.1 => /lib/librt.so.1 (0x00007fa5c5926000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007fa5c5709000)
libc.so.6 => /lib/libc.so.6 (0x00007fa5c5369000)
/lib/ld-linux-x86-64.so.2 (0x00007fa5c627c000)
libdl.so.2 => /lib/libdl.so.2 (0x00007fa5c5165000)

Version information:
/usr/local/bin/eclipse_backend:
libcrypto.so.1.0.0 (OPENSSL_1.0.0) => not found
librt.so.1 (GLIBC_2.2.5) => /lib/librt.so.1
libpthread.so.0 (GLIBC_2.4) => /lib/libpthread.so.0
libpthread.so.0 (GLIBC_2.12) => /lib/libpthread.so.0
libpthread.so.0 (GLIBC_2.3.3) => /lib/libpthread.so.0
libpthread.so.0 (GLIBC_2.3.2) => /lib/libpthread.so.0
libpthread.so.0 (GLIBC_2.2.5) => /lib/libpthread.so.0
libm.so.6 (GLIBC_2.2.5) => /lib/libm.so.6
libc.so.6 (GLIBC_2.14) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
libc.so.6 (GLIBC_2.7) => /lib/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
/lib/libm.so.6:
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib/ld-linux-x86-64.so.2
libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
/usr/lib/libcrypto.so.1.0.0:
libdl.so.2 (GLIBC_2.2.5) => /lib/libdl.so.2
libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
libc.so.6 (GLIBC_2.7) => /lib/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
/lib/librt.so.1:
libpthread.so.0 (GLIBC_2.3.2) => /lib/libpthread.so.0
libpthread.so.0 (GLIBC_PRIVATE) => /lib/libpthread.so.0
libpthread.so.0 (GLIBC_2.2.5) => /lib/libpthread.so.0
libc.so.6 (GLIBC_2.14) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
/lib/libpthread.so.0:
ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib/ld-linux-x86-64.so.2
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib/ld-linux-x86-64.so.2
libc.so.6 (GLIBC_2.14) => /lib/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
/lib/libc.so.6:
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib/ld-linux-x86-64.so.2
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib/ld-linux-x86-64.so.2
/lib/libdl.so.2:
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib/ld-linux-x86-64.so.2
libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/libc.so.6

 

admin@NI-cRIO-9030-01C59BCD:/usr/local/bin# ldd /usr/local/bin/eclipse_backend
/usr/local/bin/eclipse_backend: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /usr/local/bin/eclipse_backend)
linux-vdso.so.1 (0x00007ffe5d84f000)
libm.so.6 => /lib/libm.so.6 (0x00007f7c1cdd8000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007f7c1c98f000)
librt.so.1 => /lib/librt.so.1 (0x00007f7c1c787000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f7c1c56a000)
libc.so.6 => /lib/libc.so.6 (0x00007f7c1c1ca000)
/lib/ld-linux-x86-64.so.2 (0x00007f7c1d0dd000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f7c1bfc6000) 
Doug Ferguson

www.southerndaqsolutions.com
0 Kudos
Message 3 of 11
(14,859 Views)

I wanted to try calling openssl directly form the command line:

 

admin@NI-cRIO-9030-01C59BCD:/usr/local/bin# openssl dgst -sha256 /etc/eclipse/eclipse_config
openssl: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.1' not found (required by openssl)
openssl: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by openssl)
openssl: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.1' not found (required by openssl)
openssl: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by openssl)
admin@NI-cRIO-9030-01C59BCD:/usr/local/bin# opkg install openssl-dev
Upgrading openssl from 1.0.1e-r15.0 to 1.0.2h on root
Installing openssl-dev (1.0.2h) on root
Configuring openssl.
Configuring openssl-dev.
admin@NI-cRIO-9030-01C59BCD:/usr/local/bin# openssl dgst -sha256 /etc/eclipse/eclipse_config
SHA256(/etc/eclipse/eclipse_config)= 459ff1c513d34441590cf8c616cafb723840ffeeec0b76a3dc3d0396e962253e
admin@NI-cRIO-9030-01C59BCD:/usr/local/bin# ldd -v /usr/local/bin/eclipse_backend
/usr/local/bin/eclipse_backend: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /usr/local/bin/eclipse_backend)

 I was able to get the same type of error and resolved ir by installing 'openssl-dev'.

 

However I can't resolve the same error when called by my application...

Doug Ferguson

www.southerndaqsolutions.com
0 Kudos
Message 4 of 11
(14,855 Views)

More information....

admin@NI-cRIO-9030-01C59BCD:/usr/lib# strings /usr/lib/libcrypto.so.1.0.0 | grep "1\.0"
libcrypto.so.1.0.0
OPENSSL_1.0.2d
OPENSSL_1.0.2g
MD4 part of OpenSSL 1.0.2h 3 May 2016
MD5 part of OpenSSL 1.0.2h 3 May 2016
SHA part of OpenSSL 1.0.2h 3 May 2016
SHA1 part of OpenSSL 1.0.2h 3 May 2016
SHA-256 part of OpenSSL 1.0.2h 3 May 2016
SHA-512 part of OpenSSL 1.0.2h 3 May 2016
RIPE-MD160 part of OpenSSL 1.0.2h 3 May 2016
DES part of OpenSSL 1.0.2h 3 May 2016
libdes part of OpenSSL 1.0.2h 3 May 2016
AES part of OpenSSL 1.0.2h 3 May 2016
RC2 part of OpenSSL 1.0.2h 3 May 2016
IDEA part of OpenSSL 1.0.2h 3 May 2016
Blowfish part of OpenSSL 1.0.2h 3 May 2016
\CAST part of OpenSSL 1.0.2h 3 May 2016
CAMELLIA part of OpenSSL 1.0.2h 3 May 2016
Big Number part of OpenSSL 1.0.2h 3 May 2016
EC part of OpenSSL 1.0.2h 3 May 2016
RSA part of OpenSSL 1.0.2h 3 May 2016
DSA part of OpenSSL 1.0.2h 3 May 2016
ECDSA part of OpenSSL 1.0.2h 3 May 2016
Diffie-Hellman part of OpenSSL 1.0.2h 3 May 2016
ECDH part of OpenSSL 1.0.2h 3 May 2016
Stack part of OpenSSL 1.0.2h 3 May 2016
lhash part of OpenSSL 1.0.2h 3 May 2016
RAND part of OpenSSL 1.0.2h 3 May 2016
EVP part of OpenSSL 1.0.2h 3 May 2016
MIME-Version: 1.0%s
ASN.1 part of OpenSSL 1.0.2h 3 May 2016
PEM part of OpenSSL 1.0.2h 3 May 2016
X.509 part of OpenSSL 1.0.2h 3 May 2016
CONF part of OpenSSL 1.0.2h 3 May 2016
CONF_def part of OpenSSL 1.0.2h 3 May 2016
TXT_DB part of OpenSSL 1.0.2h 3 May 2016
%s %s HTTP/1.0
OpenSSL 1.0.2h 3 May 2016
compiler: x86_64-nilrt-linux-gcc -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/mnt/build/perforce/ThirdPartyExports/NIOpenEmbedded/trunk/5.0/objects/targettools/linuxU/x64/gcc-4.7-oe/release/build/tmp-glibc/sysroots/x64 -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/mnt/build/perforce/ThirdPartyExports/NIOpenEmbedded/trunk/5.0/objects/targettools/linuxU/x64/gcc-4.7-oe/release/build/tmp-glibc/work/core2-64-nilrt-linux/openssl/1.0.2h-r0=/usr/src/debug/openssl/1.0.2h-r0 -fdebug-prefix-map=/mnt/build/perforce/ThirdPartyExports/NIOpenEmbedded/trunk/5.0/objects/targettools/linuxU/x64/gcc-4.7-oe/release/build/tmp-glibc/sysroots/x86_64-linux= -fdebug-prefix-map=/mnt/build/perforce/ThirdPartyExports/NIOpenEmbedded/trunk/5.0/objects/targettools/linuxU/x64/gcc-4.7-oe/release/build/tmp-glibc/sysroots/x64= -Wall -Wa,--noexecstack -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
libcrypto.so.1.0.0

 

At this point I think the 2017 feed and library link in Eclipse is the root of the issue, but I don't see a solution to this. Any help would be appreciated. I am dead in the water on this topic.

 

Doug Ferguson

www.southerndaqsolutions.com
0 Kudos
Message 5 of 11
(14,839 Views)