Linux:重新编译后,C ++库无法链接

问题描述 投票:0回答:1

我在远程Linux服务器上安装了https://github.com/simongog/sdsl-lite库。我所做的是在我的主目录中创建libinclude目录,然后像./install.sh /my/home/dir一样运行脚本,如上页所述。我能够通过使用CMakeLists.txt文件将其成功链接到我的其他程序,类似于以下内容:

cmake_minimum_required(VERSION 2.8)
set (CMAKE_CXX_STANDARD 14)

macro(use_cxx14)
  if (CMAKE_VERSION VERSION_LESS "3.1")
    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
        set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -mcmodel=large")
    endif ()
  else ()
     set (CMAKE_CXX_STANDARD 14)
  endif ()
endmacro(use_cxx14)

use_cxx14()

# Locate GTest
link_directories(/my/home/dir/)
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /my/home/dir/)
list(APPEND CMAKE_PREFIX_PATH "/my/home/dir/")
list(APPEND CMAKE_LIBRARY_PATH /my/home/dir/lib/)
INCLUDE_DIRECTORIES(/my/home/dir/include)
LINK_DIRECTORIES(/my/home/dir/lib)
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

# Link runTests with what we want to test and the GTest and pthread library
add_executable(runTests rs_bitvector_test.cpp)
# SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
# SET(BUILD_SHARED_LIBRARIES OFF)
# SET(CMAKE_EXE_LINKER_FLAGS "-static")
target_link_libraries(runTests sdsl ${GTEST_LIBRARIES} pthread)

(服务器缺少C ++ 14,但名称仍然存在,尽管我确实使用了C ++ 11选项)

现在我已经更改了以前下载的库位置内的源文件并重新编译了它。现在连接已停止工作。可能是什么原因?在重新编译期间,远程服务器不断告诉我一些“未来的修改时间”和“构建可能不完整”。这是什么原因?可以做些什么?

编辑:基于评论中的建议,我删除了build目录(模拟make clean)并将其替换为原始包的目录中的。现在,timstamps问题已经消失,但链接仍然失败。

c++ linker googletest
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.