在CLion中将LD_PRELOAD添加到“运行”可执行文件

时间:2016-12-06 12:01:26

标签: c++ cmake clion

当我使用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”

2 个答案:

答案 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++ ...