/usr/bin/ld: cannot find -lcassandra

/usr/bin/ld: cannot find -lcassandra

本文关键字:find -lcassandra cannot ld usr bin      更新时间:2023-10-16

我刚刚为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(一些疯狂的扩展)并重新编译