2016-12-06 43 views
0

當我編譯在克利翁我的測試應用程序用gcc 6.2,它輸出在克利翁添加LD_PRELOAD到「跑」可執行

/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,當我通過控制檯運行我編譯的應用程序時,它工作正常。

問題:我拿什麼在克利翁投入CMakeList.txt,所以,當我點擊「運行」,在克利翁 - 我編譯的應用程序執行的「LD_PRELOAD =東西./myApp」,而不僅僅是」 ./ myApp「

回答

0

那麼,幫助自己。在CLion中的項目的構建配置中添加了環境變量。 enter image description here

0

當我編譯我的克利翁測試應用程序用gcc 6.2,它輸出

我猜你的意思是「當我運行我的測試應用程序」。發生這種情況是因爲您的應用程序已鏈接到較新版本的libstdC++,但只能在啓動時找到較舊版本的應用程序。

我拿什麼投入CMakeList.txt在克利翁,所以,當我點擊「運行」,在克利翁 - 我編寫的應用程序執行的「LD_PRELOAD =東西./myApp」,而不是僅僅 」 ./myApp 「

你要麼需要使用修改LD_LIBRARY_PATH運行你的應用程序(使之指向6.2的的libstdC++,不是4.8的)或自定義rpath的建立:

gcc -Wl,-rpath=/path/to/new/libstdc++ ...