finde ich die C/C++ Treiber für cassandra gerade installiert und versucht, das einfache Programm von Beispielen Verzeichnis zu laufen, aber/usr/bin/ld: can not -lcassandra
ich nicht in der Lage bin, diesen Fehler zu beheben./Usr/bin/ld: -lcassandra
nicht hier mein cassandra finden:
[email protected]:~/connect_cassandra_cpp/cpp-driver/examples/simple# which cassandra
/usr/sbin/cassandra
Hier ist die 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})
Hier sind automatisch erzeugte Dateibefehle:
[email protected]:~/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
___
Vollausgabefehler:
[email protected]:~/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
Bearbeiten auf die Frage: Cassandra Installations Ausgang:
[email protected]:~# 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.
[email protected]:~# 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
[email protected]:~#
Ich weiß nicht, diese "Bibliothek", aber wenn es unter sbin ist und nicht vor "lib" (zB libcassandra), es ist eine ausführbare Datei, keine Bibliothek. Wenn Sie nicht sicher sind, versuchen Sie "file/usr/sbin/cassandra". Wenn "ELF 32-bit LSB executable" oder ähnlich lautet, handelt es sich um eine ausführbare Datei. Übrigens können Sie cmake anweisen, nach Bibliotheken mit LINK_DIRECTORIES (dir/to/lib) zu suchen. – kamshi
Es ist eine ausführbare Datei. Die Versuchsdatei/usr/sbin/cassandra gibt die Ausgabe /usr/sbin/cassandra aus: POSIX-Shell-Skript, ASCII-Text ausführbar. Ich bin mir nicht sicher, welche Bibliotheken es braucht. –
kamshi, bedenken Sie, dass die Linie ld: nicht finden kann -l cassandra schlägt libcassandra vor.Wenn also das Programm ld lib + $ libname + .so string innerhalb der lib-Ordner sucht, kann es diese lib nicht finden. neelam, die Datei in/usr/sbin/cassandra ist wahrscheinlich natürlich das Shell-Skript, das das Programm startet, aber wenn Sie versuchen, ein Beispiel zu kompilieren, ist die lib und die Header, die Sie brauchen, das Programm ist in der Regel nur ein Client "Wenn ich eine solche Verbindung benutzen darf. versuche den devel Teil des Treibers zu installieren, normalerweise ist dies das (sehr häufige) Problem (auf jedem Linux). –