Linux: C++ 库在重新编译后无法 link

Linux: a C++ library fails to link after recompiling

我在远程 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 选项)

现在我已经在库的先前下载位置中更改了一个源文件并重新编译了它。现在链接停止工作了。可能是什么原因?在重新编译期间,远程服务器一直告诉我一些 "modification time in the future" 和 "build may be incomplete"。是这个原因吗?可以做什么?

编辑:根据评论中的建议,我删除了 build 目录(类似于 make clean)并将其替换为原始包目录中的目录。现在,时间戳问题已经解决,但链接仍然失败。

有趣的是,在注意到 sdsl 在安装期间检测到 g++ 7.3cmake 使用 4.8 进行编译后,我使用 https://cmake.org/Wiki/CMake_FAQ#How_do_I_use_a_different_compiler.3F 将编译器设置为g++ 7.3(使用上面的方法三link),终于成功了(GTest还有一些问题,不过没问题)。