当我使用gcc 6.2在CLion中编译我的测试应用程序时,它会输出
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found
这是显而易见的,因为我使用gcc 4.8作为系统编译器,gcc 6.2驻留在我的主文件夹中,编译程序正在使用我的系统库。
这里明显的解决方案是使用LD_PRELOAD
,当我通过控制台运行我编译的应用程序时,它工作正常。
问题:我应该把什么放入CLion中的CMakeList.txt,所以,当我点击CLion中的“运行”时 - 我的编译应用程序执行为“LD_PRELOAD = something ./myApp”而不是只是“./myApp”
答案 0 :(得分:0)
好吧,帮我自己。在CLion中为项目的构建配置添加了环境变量。 http://localhost:8080/
答案 1 :(得分:0)
当我使用gcc 6.2在CLion中编译我的测试应用程序时,它会输出
我猜你的意思是"当我运行我的测试应用程序"。发生这种情况是因为您的应用程序已链接到较新版本的libstdc ++,但只能在启动时找到旧版本。
我应该在CLion中放入CMakeList.txt,所以,当我点击"运行"在克里昂 - 我编译的应用程序执行为" LD_PRELOAD = something ./myApp"代替 只是" ./ myApp"
您需要使用修改后的LD_LIBRARY_PATH运行您的应用程序(以便它指向6.2< libstdc ++,而不是4.8' s)或使用自定义rpath构建:
gcc -Wl,-rpath=/path/to/new/libstdc++ ...