相关疑难解决方法(0)

加载共享库时出错:libboost_system.so.1.45.0:无法打开共享对象文件:没有这样的文件或目录

我正在Linux上构建C++可执行文件.可执行文件链接到一些boost库.

这是我尝试运行二进制文件时的输出:

root@yourbox:~/work/dev/c++/projects/testfgci/dist/Debug/GNU-Linux-x86$ ./testfgci 
./testfgci: error while loading shared libraries: libboost_system.so.1.45.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

然后我在二进制文件上运行ldd来检查依赖项:

root@yourbox:~/work/dev/c++/projects/testfgci/dist/Debug/GNU-Linux-x86$ ldd testfgci 
    linux-gate.so.1 =>  (0x00380000)
    libboost_system.so.1.45.0 => not found
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00b50000)
    libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x005f6000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0099a000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x001b3000)
    libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00110000)
    /lib/ld-linux.so.2 (0x00ea2000)
Run Code Online (Sandbox Code Playgroud)

我不确定为什么找不到liboos_system.sl.1.45.0 SO.我今天早些时候成功地建造了它.谁能解释一下?

c++ linux ubuntu ld ldd

24
推荐指数
3
解决办法
5万
查看次数

CMake:链接共享库

我已经做过几次了,但是这次我还是被卡住了。我有一个可执行文件“ myapp”和一个自己的共享库“ mylib”。在我的cmakelist中,我有以下内容:

ADD_LIBRARY(mylib SHARED ${SOURCES_LIB})
INSTALL(TARGETS mylib DESTINATION .)
ADD_EXECUTABLE(myapp ${SOURCES_APP})
TARGET_LINK_LIBRARIES(myapp ${QT_LIBRARIES} mylib)
INSTALL(TARGETS myapp DESTINATION .)
Run Code Online (Sandbox Code Playgroud)

一切都能正确编译和链接,但是当我启动myapp时,出现以下错误:

error while loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

lib和可执行文件位于安装目录中。当我通过将以上cmakelists的第一行更改为以下内容来使我的库成为静态库时:

ADD_LIBRARY(mylib STATIC ${SOURCES_LIB})
Run Code Online (Sandbox Code Playgroud)

那么一切都会100%有效。

有人知道我在做什么错吗?

static shared cmake libraries

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

cmake ×1

ld ×1

ldd ×1

libraries ×1

linux ×1

shared ×1

static ×1

ubuntu ×1