strings 查看so文件的编译生成工具

[root@atlas800 lib]# strings libdhnetsdk.so  |grep GCC
GCC_3.0
GCC: (GNU Toolchain for the A-profile Architecture 8.2-2018.11 (arm-rel-8.26)) 8.2.1 20180802

[root@atlas800 lib]# strings libdhnetsdk.so  |grep GLIB  
GLIBC_2.17

查看系统支持的GLIBC库

[root@atlas800 lib]# strings /usr/lib64/libstdc++.so.6 |grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBC_2.17
GLIBCXX_DEBUG_MESSAGE_LENGTH

[root@atlas800 lib]# strings /usr/lib64/libstdc++.so.6 |grep GCC 
GCC_4.2.0
GCC_3.3
GCC_3.0

疑问

        尽管系统包含了so文件依赖的C/C++库,但是在编译过程中,还是出现如下的问题:undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_aux(unsigned long, unsigned long, unsigned long, char)'

解决方案

        升级系统的GCC编译器版本到7,原本系统版本gcc version 4.8.2 (GCC)

上一篇:JDK1.8新特性(一):stream


下一篇:用go编写prometheus自研exporter——CPU及内存的指标