No Package Glibc-Static Available
I Am Trying to Statically Link the Libraries While Compiling a C++ Program. G++ (Gcc) 4.8.5 20150623 (Red Hat 4.8.5-4) $ G++ -Std=C++11...
I am trying to statically link the libraries while compiling a C++ program.
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
$ g++ -std=c++11 -I/home/jerry/Desktop/tiny-dnn -m32 -pthread -static train.cpp -o train
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lpthread
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
I found this post (/usr/bin/ld: cannot find -lc while compiling with makefile ) that says to to install glibc-static.
bash-4.2# sudo yum install glibc-static
Loaded plugins: langpacks
ol7_UEKR3 | 1.2 kB 00:00:00
ol7_latest | 1.4 kB 00:00:00
No package glibc-static available.
Error: Nothing to do
bash-4.2# yum info glibc-static
Loaded plugins: langpacks
Error: No matching Packages to list
bash-4.2# yum search glibc
Loaded plugins: langpacks
================================================== N/S matched: glibc ===================================================
glibc-common.x86_64 : Common binaries and locale data for glibc
compat-glibc.x86_64 : Compatibility C library
compat-glibc-headers.x86_64 : Header files for development using standard C libraries.
glibc.i686 : The GNU libc libraries
glibc.x86_64 : The GNU libc libraries
glibc-devel.i686 : Object files for development using standard C libraries.
glibc-devel.x86_64 : Object files for development using standard C libraries.
glibc-headers.x86_64 : Header files for development using standard C libraries.
glibc-utils.x86_64 : Development utilities from GNU C library
kdesdk-kmtrace.x86_64 : Assist with malloc debugging using glibc's "mtrace" functionality
kernel-headers.x86_64 : Header files for the Linux kernel for use by glibc
latrace.i686 : LD_AUDIT feature frontend for glibc 2.4+
latrace.x86_64 : LD_AUDIT feature frontend for glibc 2.4+
Name and summary matches only, use "search all" for everything.
How can I install glibc-static? Please help.
Thanks.
3 Answers
glibc-static is only available in the Optional channels. RPM packages in the Optional channels are officially unsupported, which is why these channels are not enabled by default.
The exact command to enable optional channels depends on the product variant. Something like
subscription-manager repos --enable=rhel-7-server-optional-rpms
could work, but the details depend on your environment (and it's more a sysadmin than a programming matter at this point).
Note: There is are very good reasons why static linking is not supported by Red Hat. You really should avoid it.
I had this issue in the Docker container for Centos 8. I found that the following worked:
dnf --enablerepo=powertools install glibc-static
This was suggested from this packages site
you should user glibc-static to compile static bin