centos7 node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found问题 1、问题 centos7服务器使用nvm安装的node之后,只要使用npm npm -v node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) node: /lib64/libc.so Links like libm.so -> libm.so.5 (where libm.so.5 is an old library) are wrong, libm.so should point
一 问题背景 这个错误的出现往往与我前面的一篇文章 ImportError: /lib64/libm.so.6: version `CXXAB_1.3.8.' not found (required by 三 解决重点 gcc的版本不要太高,gcc-7.2.0.tar.xz 这个版本即可,如需查看相关链接请点击 ImportError: /lib64/libm.so.6: version `CXXAB_1.3.8 --version # 2 大部分时候make之后需要这一步 make之后 make install之前打开新窗口去创建一个软链接不然install的时候会报错 cd /lib64 unlink libm.so .6 ln -s libm-2.23.so libm.so.6 # 3 可能出现的错误和解决方案 “”“ make的错误两个文件缺少一对 {} 如何快速找到需要添加的位置, 进入vim后 直接输入
使用在AI项目中,由于需要用到tensorflow,scipy,sklearn等这些库,所以需要libstdc++库。
npm -v node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) node: /lib64/libc.so
/libavutil/libm.h:62: error: static declaration of 'lrint' follows non-static declaration .. /libavutil/libm.h:69: error: static declaration of 'lrintf' follows non-static declaration .. /libavutil/libm.h:76: error: static declaration of 'round' follows non-static declaration .. /libavutil/libm.h:83: error: static declaration of 'roundf' follows non-static declaration . /libavutil/libm.h:90: error: static declaration of 'truncf' follows non-static declaration 解决办法在config.h
文章目录 一、libm.so 数学函数动态库 二、liblog.so 日志模块动态库 三、libselinux.so 安全模块动态库 一、libm.so 数学函数动态库 ---- libm.so 是数学相关函数库 , 该动态库是 libc.so 动态库的依赖库 , 是最基础的函数库 ; 执行 cp /system/lib/libm.so /sdcard/Pictures 命令 , 将 libm.so 动态库拷贝到
由于需求的变化,应用B需要库libM.a的能力,以便和服务M交互。为了复用和简化,通过类A间接提供,应用B不用修改代码,只需要重新编译即可获得新的能力,其它用到类A的应用也是如此。 ? 方法二:使用NULL模式 这种方法扩展性更好,新增其它的依赖也能应付,已有或不需要新特性的完全不需要修改,编译不受影响,不会被迫依赖libM.a。 和Server M交互 } virtual void method2() { // 调用libM.a和Server M交互 } }; // 原类A class A { public: // 新增默认参数 _x->method1(); } void method2() { _x->method2(); } private: IX* _x; }; // 对于应用A,不用修改任何代码,而且编译时不需要依赖libM.a // 对于应用B,需要微修改,并编译时指定库libM.a和Server void ApplicatonB::f() { CMX* x = new CMX; A a(x); a.method1(); }
由于代码中用到了exp函数,它位于数学库libm.so或者libm.a中,因此编译时需要加上-lm。 观察共享目标文件libm.so: $ readelf -h /lib/x86_64-linux-gnu/libm.so.6 ELF Header: Magic: 7f 45 4c 46 02 01 从结果可以看到,libm.so是共享目标文件(Shared object file)。 或libm.a。 由于main.c中使用了libm.a中的exp函数,因此链接时,会将libm.a中需要的代码“拷贝”到最终的可执行文件main中。 特别注意,必须把-lm放在后面。
Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC LOCAL_STATIC_LIBRARIES := libcutils libc libm Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC LOCAL_STATIC_LIBRARIES := libcutils libc libm Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC LOCAL_STATIC_LIBRARIES := libcutils libc libm Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC LOCAL_STATIC_LIBRARIES := libcutils libc libm Wpointer-arith -Wcast-qual \ -Winline -MMD -fPIC LOCAL_STATIC_LIBRARIES := libcutils libc libm
libm.so.6 (GLIBC_2.27) => not found libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6 看起来, 它是找libm.so.6(GLIBC_2.27)没找到,但找到了libm.so.6 (GLIBC_2.2.5)。 .6: image-20231025220044115 那我意思其实就是,/lib64/libm.so.6就是glibc的一部分,那这个2.17版本的glibc,包含的/lib64/libm.so.6报的这个错到底啥意思啊 libm.so.6 (GLIBC_2.27) => not found libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6 我找到了一个绝好的回答 怎么满足它呢,就是把/lib64/libm.so.6的版本升上去,直到包含GLIBC_2.27这个version symbol。
0x00007fff675ff000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fdc27a17000) libm.so .6 => /lib64/libm.so.6 (0x00007fdc27793000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fdc2757c000 .6 => /lib64/libm.so.6 (0x00007f1c62466000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f1c62250000 0x00007f30651cc000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f3064eb9000) libm.so .6 => /lib64/libm.so.6 (0x00007f3064c34000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3064a1e000
=========================================== [2021-07-24 14:50:19][PID:8229] [|- locate ] locate libm.so readelf -h /lib/x86_64-linux-gnu/libm.so.6 共享目标文件 [2021-07-24 14:50:19][PID:8229] [静态链接] gcc main.c -lm #默认使用的是动态链接 gcc -c main.c #生成可重定位目标文件(readelf -h main.o ) gcc -o main main.o -lm (链接 libm.a or libm.so, 一定要放最后面,先提取未知的符号,再在库中 查找 符号定义) readelf -h main (查看ELF 文件的头) [2021-07-24 14:50:19][PID
tools/inc/ /datadisk/eisc/server/mysql/mariadb1011/include/mysql/server/ ) #toolsCmakeSo=( cgicc libm.so Boost ) toolsCmakeSo=(libm.so Boost) # pow 需要引用库: libm.so anfangRunAppList include/ /datadisk/eisc/server/mysql/mariadb1011/include/mysql/server/ ) #studayCmakeSo=( cgicc libm.so ) # pow 需要引用库: libm.so studayCmakeSo=( libm.so ) headCmake
return 0; } 编译: g++ -Wall hello.cpp hello_fn.cpp -o hello2 ---- 链接外部库 extlib.cpp(使用了 math.h, /usr/lib/libm.a double y = cos(x); printf("Cos(1.0) is: %f\n", y); return 0; } 编译: g++ -Wall extlib.cpp /usr/lib/libm.a -o extlib 或者 g++ -Wall extlib.c -lm -o extlib -lm = /usr/lib/libm.a -l 代表连接, m 代表 lib(m).a 中的 m ----
来自man dlopen的示例: #include <stdio.h> #include <stdlib.h> #include <dlfcn.h> // Defines LIBM_SO (which will be a string such as "libm.so.6") #include <gnu/lib-names.h> // the type signature used by our cosine function typedef double (*trig_func)(double); int main() { char *error; // load the libm library into memory void *handle = dlopen(LIBM_SO, RTLD_LAZY); // handle loading failures if (! handle) { fprintf(stderr, "unable to load libm: %s\n", dlerror()); return EXIT_FAILURE
.11.1 linux-vdso.so.1 => (0x00007fffd77ff000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f19777f5000) libm.so .6 => /lib64/libm.so.6 (0x00007f1977570000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1977353000 .11.1 linux-vdso.so.1 => (0x00007fff735ff000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f3a7da69000) libm.so .6 => /lib64/libm.so.6 (0x00007f3a7d7e4000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3a7d5c7000
然后是一堆sse的函数找不到,比如_libm_sse2_sin_precise _libm_sse2_pow_precise _libm_sse2_acos_precise这些。 见:http://opensource.apple.com//source/Libm/Libm-315/Source/ARM/ 最后的最后,终于成功跑起miniblink~!!!!!!!!!!!!!!!
$ ldd main linux-vdso.so.1 => (0x00007ffc97fdf000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so
libnnz11.so (0x00007f06c2eee000) libdl.so.2 => /lib64/libdl.so.2 (0x00000031f8200000) libm.so .6 => /lib64/libm.so.6 (0x00000031f7e00000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00000031f8600000 libnnz11.so (0x00007f97d43cf000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003668e00000) libm.so .6 => /lib64/libm.so.6 (0x0000003668a00000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003669200000
三、解决方案 报错信息第一行说是在源程序中有个sin函数没有定义;报错信息第二行说是缺少libm.so这个文件。 综上所述,应链接libm库文件,所以正确的命令应该是这样子的: gcc osdemo.c -lm -lOSMesa -lGLU -lGL -o osdemo 问题解决!