安装的可执行文件在加载过程中找不到共享库

问题描述

我正在从这个 cmake 文件构建一个 kmeans 可执行文件

# check the minimum version
cmake_minimum_required( VERSION 3.16 )

# the project name
project( kmeans )


#########################################################################
#### Define all the global variables to compile the application
#########################################################################
set( APPLICATION_NAME "kmeans")

#########################################################################
#### Adjust compiling option for this application
#########################################################################

# force the Release build if not already set
if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE Release)
endif(NOT CMAKE_BUILD_TYPE)

# setting common c++ flags
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -pthread -std=c++17 -static-libgcc -DKMEANS_DATASET_PATH=\"\\\"${CMAKE_CURRENT_SOURCE_DIR}/dataset/\\\"\"")

# setting debug flags
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -g3 -O0")

# setting release with debug info flags
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -march=native -mtune=native -g3 -O2")

# setting release flags
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native -mtune=native -O3")


#########################################################################
#### Find external libaries
#########################################################################

# Boost program options
find_package(Boost required program_options)

# include the directories
include_directories(${Boost_INCLUDES} )

################################
#### Sources
################################

set( KMEANS_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src)
set( KMEANS_HDR_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include)
set( KMEANS_HDR_FILES
  ${KMEANS_HDR_PATH}/kmeans.h
)
set( KMEANS_SRC_FILES
  ${KMEANS_SRC_PATH}/main.cc
  ${KMEANS_SRC_PATH}/cluster.c
  ${KMEANS_SRC_PATH}/kmeans_clustering.c
)

include_directories( ${KMEANS_HDR_PATH} )


################################
#### Compilation
################################


#----- Set binary name for the mini-app
add_executable(${APPLICATION_NAME} ${KMEANS_SRC_FILES} ${KMEANS_HDR_FILES})

target_link_libraries(${APPLICATION_NAME} Boost::program_options)

################################
#### Install
################################

install( TARGETS ${APPLICATION_NAME} DESTINATION ${PROJECT_SOURCE_DIR}/bin )

构建 kmeans 可执行文件后,在 build 目录(build/kmeans)中正确生成并完美运行。在 make install 之后,生成的二进制文件 (bin/kmeans) 给出以下错误 ./kmeans: error while loading shared libraries: libboost_program_options.so.1.75.0: cannot open shared object file: No such file or directory。我试图查看 install 命令文档,但找不到任何处理此案例的选项。我想我在 cmake 文件中遗漏了一些东西,但找不到它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...