Tag Archives: Bug encounter resolution record

[Solved] ××: error while loading shared libraries: ××.so.19: cannot open shared object file: No such file or directory

××: error while loading shared libraries: ××. so. 19: cannot open shared object file: No such file or directory

When starting some programs, the corresponding link library could not find a solution

[root@feng1 build]# ttyd --help
ttyd: error while loading shared libraries: libwebsockets.so.19: cannot open shared object file: No such file or directory
[root@feng1 build]# ttyd --help
ttyd: error while loading shared libraries: libjson-c.so.5: cannot open shared object file: No such file or directory

This means that the program needs libwebsockets.so.19 and libjson-c.so.5 the functions in the two dynamic link libraries can not be found in the corresponding directory. The dynamic link library under Linux is composed of LD So is responsible for loading, and his configuration file is in etc/LD.so.conf , it is found that there is really no ××.So file under/usr/local/lib configured, we can manually add the specified path to solve the error problem

/environment/libwebsockets/build/lib		## libwebsockets.so.19
/cpack/json-c/build					## libjson-c.so.5

Then refresh the cache and run it again

[root@feng1 build]# sudo ldconfig		

[root@feng1 build]# ttyd --help
ttyd is a tool for sharing terminal over the web

USAGE:
    ttyd [options] <command> [<arguments...>]

VERSION:
    1.6.3-3e37e33

OPTIONS:
    -p, --port              Port to listen (default: 7681, use `0` for random port)
    -i, --interface         Network interface to bind (eg: eth0), or UNIX domain socket path (eg: /var/run/ttyd.sock)
    -c, --credential        Credential for basic authentication (format: username:password)
    -H, --auth-header       HTTP Header name for auth proxy, this will configure ttyd to let a HTTP reverse proxy handle authentication
    -u, --uid               User id to run with
    -g, --gid               Group id to run with
    -s, --signal            Signal to send to the command when exit it (default: 1, SIGHUP)
    -w, --cwd               Working directory to be set for the child program
    -a, --url-arg           Allow client to send command line arguments in URL (eg: http://localhost:7681?arg=foo&arg=bar)
    -R, --readonly          Do not allow clients to write to the TTY
    -t, --client-option     Send option to client (format: key=value), repeat to add more options
    -T, --terminal-type     Terminal type to report, default: xterm-256color
    -O, --check-origin      Do not allow websocket connection from different origin
    -m, --max-clients       Maximum clients to support (default: 0, no limit)
    -o, --once              Accept only one client and exit on disconnection
    -B, --browser           Open terminal with the default system browser
    -I, --index             Custom index.html path
    -b, --base-path         Expected base path for requests coming from a reverse proxy (eg: /mounted/here, max length: 128)
    -P, --ping-interval     Websocket ping interval(sec) (default: 5)
    -S, --ssl               Enable SSL
    -C, --ssl-cert          SSL certificate file path
    -K, --ssl-key           SSL key file path
    -A, --ssl-ca            SSL CA file path for client certificate verification
    -d, --debug             Set log level (default: 7)
    -v, --version           Print the version and exit
    -h, --help              Print this text and exit

Visit https://github.com/tsl0922/ttyd to get more information and report bugs.
[root@feng1 build]#

How to Solve Fatal error stdatomic in C/C++ Compilation

Fatal error: stdatomic. H: no such file or directory

Under Linux, errors are reported when compiling the source code using gcc

fatal error: stdatomic.h: No such file or directory
 #include <stdatomic.h>
                       ^
compilation terminated.

The reason is that the version of GCC 4.8 is too low and requires a higher version of GCC. How to safely upgrade the GCC version?

The devtoolset package can be installed through CentOS release SCL source

yum install centos-release-scl
yum install devtoolset-8

Or add your own source to install it (I’ll take centos7 as an example)

vi /etc/yum.repos.d/CentOS-SCLo-scl.repo
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://mirror.centos.org/centos/7/sclo/$basearch/rh/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

Activate the GCC version to make it effective

scl enable devtoolset-8 bash

or

source /opt/rh/devtoolset-8/enable

At this time, you can see through the GCC — version command that the GCC version has changed to 8.X.x. it is worth noting that this only takes effect in the current bash. If it needs to take effect permanently, you can add environment variables yourself.