/usr/bin/ld: cannot find -lcassandra
/usr/bin/ld: cannot find -lcassandra
我刚刚为cassandra安装了C/C++驱动程序,并试图从examples目录运行简单的程序,但
我无法解决此错误/usr/bin/ld:找不到-lcassandra
这是我的卡桑德拉:
root@iWanUbuntu-1:~/connect_cassandra_cpp/cpp-driver/examples/simple# which cassandra
/usr/sbin/cassandra
这是CMakeLists.txt:
cmake_minimum_required(VERSION 2.6.4)
set(PROJECT_NAME_STR cassandra)
set(PROJECT_LIB_NAME ${PROJECT_NAME_STR})
set(PROJECT_LIB_NAME_TARGET ${PROJECT_LIB_NAME})
set(PROJECT_SOURCE_DIR /root/connect_cassandra_cpp/cpp-driver)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ".")
set(PROJECT_EXAMPLE_NAME simple)
file(GLOB EXAMPLE_SRC_FILES ${PROJECT_SOURCE_DIR}/examples/simple/*.c)
include_directories(${INCLUDES})
add_executable(${PROJECT_EXAMPLE_NAME} ${EXAMPLE_SRC_FILES})
target_link_libraries(${PROJECT_EXAMPLE_NAME} ${PROJECT_LIB_NAME_TARGET} ${CASS_LIBS})
set_property(TARGET ${PROJECT_EXAMPLE_NAME} APPEND PROPERTY COMPILE_FLAGS ${EXAMPLE_C_FLAGS})
以下是自动生成的生成文件命令:
root@iWanUbuntu-1:~/connect_cassandra_cpp/cpp-driver/examples/simple# make --just-print
/usr/bin/cmake -H/root/connect_cassandra_cpp/cpp-driver/examples/simple -B/root/connect_cassandra_cpp/cpp-driver/examples/simple --check-build-system
CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /root/connect_cassandra_cpp /cpp-driver/examples/simple/CMakeFiles /root/connect_cassandra_cpp/cpp-driver/examples/simple/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make -f CMakeFiles/simple.dir/build.make CMakeFiles/simple.dir/depend
cd /root/connect_cassandra_cpp/cpp-driver/examples/simple && /usr/bin/cmake -E
cmake_depends "Unix Makefiles" /root/connect_cassandra_cpp/cpp-driver/examples/simple /root/connect_cassandra_cpp/cpp-driver/examples/simple
/root/connect_cassandra_cpp/cpp-driver/examples/simple /root/connect_cassandra_cpp/cpp-driver/examples/simple /root/connect_cassandra_cpp/cpp-driver/examples/simple/CMakeFiles/simple.dir/DependInfo.cmake --color=
make -f CMakeFiles/simple.dir/build.make CMakeFiles/simple.dir/build
/usr/bin/cmake -E cmake_echo_color --switch= --red --bold "Linking C executable simple"
/usr/bin/cmake -E cmake_link_script CMakeFiles/simple.dir/link.txt --verbose=
/usr/bin/cmake -E cmake_progress_report /root/connect_cassandra_cpp/cpp-driver/examples/simple/CMakeFiles 1
echo "Built target simple"
/usr/bin/cmake -E cmake_progress_start /root/connect_cassandra_cpp/cpp-driver/examples/simple/CMakeFiles 0
___
完整错误输出:
root@iWanUbuntu-1:~/connect_cassandra_cpp/cpp-driver/examples/simple# make
-- Configuring done
-- Generating done
-- Build files have been written to: /root/connect_cassandra_cpp/cpp-driver/examples/simple
Linking C executable simple
/usr/bin/ld: cannot find -lcassandra
collect2: error: ld returned 1 exit status
CMakeFiles/simple.dir/build.make:85: recipe for target 'simple' failed
make[2]: *** [simple] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/simple.dir/all' failed
make[1]: *** [CMakeFiles/simple.dir/all] Error 2
Makefile:75: recipe for target 'all' failed
make: *** [all] Error 2enter code here
编辑到问题:Cassandra安装输出:
root@iWanUbuntu-1:~# sudo -E apt-get install cassandra
Reading package lists... Done
Building dependency tree
Reading state information... Done
cassandra is already the newest version.
The following packages were automatically installed and are no longer required:
fonts-dejavu-extra libatk-wrapper-java libatk-wrapper-java-jni libgif4 libgnomevfs2-0 libgnomevfs2-common libice-dev libntdb1 libpthread-stubs0-dev libsctp1 libsm-dev libx11-dev libx11-doc libxau-dev libxcb1-dev libxdmcp-dev libxt-dev lksctp-tools python-ntdb tzdata-java x11proto-core-dev x11proto-input dev x11proto-kb-dev xorg-sgml-doctools xtrans-dev
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 15 not upgraded.
root@iWanUbuntu-1:~# sudo -E apt-get install cassandra-devel
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package cassandra-devel
root@iWanUbuntu-1:~#
我正在查看这个项目的自述文件,您似乎克隆了代码部分https://github.com/datastax/cpp-driver/blob/master/README.md,但您还需要可执行文件。在可执行文件下有driver和driver-dev,安装driver-dev.deb包会得到1。头文件2。共享的libs,编译器找不到。通常,编译器会告诉您在/usr/lib或/usr/lib64文件夹中找不到libcassandra.so。这通常是在安装驱动程序,但忘记安装driver-devel包时发生的。这里是devel包http://downloads.datastax.com/cpp-driver/ubuntu/或者,如果你安装了带有apt-get的cassandra和类似的东西
apt-get install cassandra
尝试使用获取开发部分
apt-get install cassandra-devel
编辑:
最终,我从源代码手动编译并安装了驱动程序,然后编译了示例/简单,因为其他解决方案(嵌入cassandra cpp-driver.rpm)并没有解决整个线程。只需这样做:
git clone https://github.com/datastax/cpp-driver.git
cd cpp-driver
mkdir build
cd build
cmake ..
make
sudo make install
cd ../examples/simple
gcc simple.c -L /usr/local/lib64 -l cassandra -I /usr/local/include -o simple.o
为我工作。另一方面,你可以在/usr/lib64/中搜索libcassandra.so.(一些疯狂的扩展),在/usr/include中搜索cassandra.h。如果只是建立一个符号链接/usr/lib64/libcasandra.so到/usr/lib64-libcasandra.so(一些疯狂的扩展)并重新编译
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 错误"Could not find Boost"(缺少:上下文标头)
- /usr/bin/ld: cannot find -lc++
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 使用 find 解析文件会给出不同文件的奇怪结果
- 在 ifcondition al中 find() C++ STL 中的 == a.end() 有什么用?
- Cannot find -lglad
- "Cannot find -l<directory>"错误 - CMake
- 为什么在向量上使用 std::find() 时会出现错误?
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- C++ find() 在存储为变量时返回不同的值
- set::find 查找不存在的元素
- 使用 std::find 时没有匹配的函数调用错误
- 在先前调用 string::find 后添加内存分配和内存集会导致它返回 npos.为什么?
- Windows cannot find MinGW
- find() stl in vector in c++
- /usr/bin/ld: cannot find -lcassandra