使用新编译器移植程序时的问题 在CentOS 7.5操作系统中,GCC编译器版本13.3是根据源代码构建的。使用此编译器,建立了测试程序 G ++ main.cc -std = C ++ 20 构建后,Progra ...

问题描述 投票:0回答:1
构建后,程序运行并正常工作。然后,该程序被“移交给客户”,在那里他试图在同一操作系统上运行它,但是安装了默认编译器GCC版本4.8.5。结果,收到以下错误:

/a.out: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /a.out) /a.out: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /a.out) /a.out: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /a.out) /a.out: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /a.out)
可以配置新编译器,以便它构建的程序是便携式的吗?毕竟,当从DevToolset-11安装编译器时,它以某种方式可以工作(在没有此编译器的机器上构建的程序可以使用)。
    

solutions对我有用的溶解
如果您仅运送没有共享库的可执行文件,则可以静态地将libgcc和libstdc ++链接到

-static-libgcc -static-libstdc++

c++ gcc libstdc++
1个回答
0
投票
如果您要运送共享库,那么您还需要运送

libgcc.so

    libstdc++.so
  1. ,并且需要在启动可执行文件之前将包含它们的文件夹添加到
    LD_LIBRARY_PATH
    的开始(shell脚本可以帮助您使用)
  2. 	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.