如何在不需要在其他机器上安装共享库的情况下编译和交付我的应用程序

How do I compile and deliver my application without requiring installation of shared libraries on other machines

在我的 Ubuntu 机器上我安装了 libGLEW。但是,我没有在我的另一台 Ubuntu 机器上安装它。它在我的编译机器上工作,但现在我在将我的可执行文件复制到我的另一台机器后收到以下错误。

我想找到一个不需要我的其他机器来安装库的解决方案。也许我可以简单地与可执行文件一起共享文件,就像我在 Windows 中使用 DLL 文件一样?那可能吗?如果是这样,我该怎么做?

error while loading shared libraries: libGLEW.so.2.1: cannot open shared object file: No such file or directory

在CMake中,我使用了以下相关代码:

set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -g" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -g" )

include_directories(
    ...
    "/usr/include/GL" # Also includes glew.h
)

add_executable( ${PROJECT_NAME}
    ${PROJECT_SRC}
)

target_link_libraries( ${PROJECT_NAME}
    ...
    "GLEW"
)

Maybe I can simply share the file along with the executable, like I would do in Windows with DLL files?

它'depends'就'dependencies'。

使用命令ldd 找出库或程序需要哪些库。目标系统上必须存在(安装)那些必需的库。

即使目标系统上安装了所需的库,也可能没有所需的版本。

这就是为什么不同的 (linux) 系统有自己的包管理系统,它能够解析依赖关系并自动安装它们。

为了解决我的问题,我在我的源文件中添加了 glew.c 解决了这个问题。