静态链接ActiveMQ-cpp

时间:2018-04-25 10:54:36

标签: c++ c++11 g++ static-libraries activemq-cpp

我正在创建一个c ++项目,我希望它在独立模式下运行,没有任何依赖关系,因为它将部署在多个服务器上。

这是我的 CMakeLists 文件:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
<div class="row">
  <div class="col-12 col-sm-12 col-md-5">
    xxx
  </div>
  <div class="col-4 col-sm-4 col-md-2">
    xxx
  </div>
  <div class="col-4 col-sm-4 col-md-2">
    xxx
  </div>
  <div class="col-4 col-sm-4 col-md-2">
    xxx
  </div>
</div>
  

libactivemq-cpp.a和libapr-1.a可以在我的项目目录中找到

但是我在链接期间project(CMS-test) cmake_minimum_required(VERSION 2.6) add_executable(main main.cpp) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") INCLUDE_DIRECTORIES(/usr/local/apr/include/apr-1) INCLUDE_DIRECTORIES(/usr/local/include/activemq-cpp-3.9.4) target_link_libraries(main ${CMAKE_SOURCE_DIR}/libapr-1.a) target_link_libraries(main ${CMAKE_SOURCE_DIR}/libactivemq-cpp.a) 之后遇到的错误是

make main

以及更多......

我不知道如何解决这些错误

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我认为apr是activemq的依赖项。如果是这种情况,则需要切换apr和activemq的链接顺序。

链接器只使用每个库一次。当它处理libactivemq-cpp.a时,它看到它依赖于apr,但libapr-1.a已经被处理。

答案 1 :(得分:0)

弄清楚我正在以错误的顺序执行target_link_libraries并按Finn的指示改变了库的顺序

现在正在运行的CMakeLists文件是

project(CMS-test C CXX)
cmake_minimum_required(VERSION 2.6)

add_executable(main main.cpp)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

INCLUDE_DIRECTORIES(/usr/local/apr/include/apr-1)
INCLUDE_DIRECTORIES(/usr/local/include/activemq-cpp-3.9.4)
INCLUDE_DIRECTORIES(/usr/lib/x86_64-linux-gnu/)
find_package (Threads)
target_link_libraries(main ${CMAKE_THREAD_LIBS_INIT})


target_link_libraries(main ${CMAKE_SOURCE_DIR}/libactivemq-cpp.a)
target_link_libraries(main ${CMAKE_SOURCE_DIR}/libapr-1.a)
target_link_libraries(main ssl)
target_link_libraries(main crypto)
target_link_libraries(main dl)