我正在开展一个项目。到目前为止,我一直在使用一个简单的编辑器和我自己的Makefile来构建它。不过,我想切换到CLion。
根据this question,您可以告诉CMake运行您的Makefile。所以我的CMake.txt
看起来像这样:
cmake_minimum_required(VERSION 3.6)
project(rekotrans_testbed_simulator)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_custom_target(rekotrans_testbed_simulator COMMAND make -C ${rekotrans_testbed_simulator_SOURCE_DIR} CLION_EXE_DIR=${PROJECT_BINARY_DIR})
它建立得很好。我还设置了工作目录并指出了正确的可执行文件。
在我的项目中,我使用cppunit 1.13
进行测试。但是它无法找到共享库:
/home/kunterbunt/dev/comnets/git-repository/rekotrans-testbed-simulator/rekotrans-testbed-simulator-tests: error while loading shared libraries: libcppunit-1.13.so.0: cannot open shared object file: No such file or directory
LD_LIBRARY_PATH
指向
echo $LD_LIBRARY_PATH
/usr/local/lib
和/usr/local/lib
包含库:
ls /usr/local/lib/
libcppunit-1.13.so.0@ libcppunit-1.13.so.0.0.2* libcppunit.a libcppunit.la* libcppunit.so@ pkgconfig/
ldd
显示了这一点:
ldd /home/kunterbunt/dev/comnets/git-repository/rekotrans-testbed-simulator/rekotrans-testbed-simulator-tests
linux-vdso.so.1 (0x00007ffc257e8000)
libboost_thread.so.1.63.0 => /usr/lib/libboost_thread.so.1.63.0 (0x00007f1c73254000)
libboost_system.so.1.63.0 => /usr/lib/libboost_system.so.1.63.0 (0x00007f1c73050000)
libboost_date_time.so.1.63.0 => /usr/lib/libboost_date_time.so.1.63.0 (0x00007f1c72e3f000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f1c72c22000)
libboost_program_options.so.1.63.0 => /usr/lib/libboost_program_options.so.1.63.0 (0x00007f1c729a4000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f1c727a0000)
libcppunit-1.13.so.0 => /usr/local/lib/libcppunit-1.13.so.0 (0x00007f1c72563000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f1c721db000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f1c71ed7000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f1c71cc0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f1c71922000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f1c7171a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1c7347c000)
那么为什么CLion找不到呢?如果我从控制台运行二进制文件,一切都有效。
答案 0 :(得分:2)
正如oLen正确指出的那样,当通过GUI启动时,CLion似乎不是以我的用户身份启动的(在我的情况下是Gnome)。我不知道它是什么启动,但在LD_LIBRARY_PATH=/usr/local/lib
中设置/etc/profile
并重新启动(或重新配置)它使它工作 - 简而言之,变量没有为任何用户运行CLion设置。
另一种方式是Run -> Edit Configurations -> (select your application) -> Environment variables
。在这里,您可以手动将LD_LIBRARY_PATH
设置为您需要的任何内容,在我的情况下设置为/usr/local/lib
。
答案 1 :(得分:1)
查看How to set the environmental variable LD_LIBRARY_PATH in linux:
如果您将自定义库路径添加到LD配置,那么CLion将自动找到您的库,而您不必将它们添加到运行配置中。
在Ubuntu / Debian上,您可以通过创建新的.conf
文件来配置LD
sudo nano /etc/ld.so.conf.d/myLocalLibs.conf
只包含您的库的路径:/usr/local/lib
。最后,致电
sudo ldconfig
更新LD配置。
请注意,在某些系统(Ubuntu / Debian)上,您无法在/ etc / profile或/ etc / environment中设置LD_LIBRARY_PATH:
由于Ubuntu 9.04 Jaunty Jackalope,LD_LIBRARY_PATH无法设置 $ HOME / .profile,/ etc / profile,也没有/ etc / environment文件。你必须使用 /etc/ld.so.conf.d/*.conf配置文件。见Launchpad bug #366728 欲获得更多信息。 (help.ubuntu.com)
答案 2 :(得分:0)
作为已接受答案的替代方法,您可以转到Run -> Edit Configurations -> Templates
,选择CMake Application
(和/或Google Test
)并将Environment variables:
设置为:
LD_LIBRARY_PATH=/usr/local/gcc-latest/lib64
从现在开始创建的任何新应用程序都将继承这些设置。