背景
使用gcc8.2编译a.out,机器安装默认的版本为gcc3.4。使用ldd打印so依赖列表,此时libstdc++.so位于/usr/lib64目录下
打印程序运行时加载的so库列表,显示加载的是/home/xxx/gcc-8.2/lib/目录下的libstdc++.so
使用默认版本编译的程序,运行时加载的时/usr/lib64目录下的libstdc++库
此时的环境变量LD_LIBRARY_PATH未设值
分析()
对比两个进程ldd的结果,可以看到ld-linux-x86-64.so.2是不一样的。加载器的路径是gcc写入到二进制文件中的,可以通过命令strings查看这个路径。修改gcc的spec文件可以重新指定加载器路径。