在 Ubuntu 上使用 -ljpeg 构建的共享库在 Debian 上不起作用

在 Ubuntu 上使用 -ljpeg 构建的共享库在 Debian 上不起作用

我正在使用C语言制作一个共享库。该库依赖于 libjpeg 和 X api。我在 Ubuntu 18.04 操作系统上构建它,并使用以下命令来构建它gcc mycode.c -o libname.so --shared -lX11 -lXss -lXExt -ljpeg -fPIC

我想在基于 Debian 的操作系统上使用这个库,例如 Debian OS。当我在 Debian 9.9 上调用这个库的函数时,我收到一个异常Unable to load a file libname.so or one of it's dependencies。但是当我在 Debian 上使用相同的命令构建此 C 代码并进一步使用它时 - 一切正常。

我认为问题出在库文件因为在 Ubuntu 上我使用名为库文件但 Debian 上没有同名的库,我使用libjpeg-turbo

请帮助我了解如何在 Ubuntu 中构建我的库,然后在其他基于 Debian 的系统上使用它。

另外,我想提一下,我不是 Linux 发行版和它们之间差异的专家,如果我想做的事情是不可能的,很抱歉浪费时间。

答案1

当你这样做时:

ldd path/to/your/libname.so

在 Debian 系统上,然后ldd将向您显示它认为库链接到的内容以及 ld.so 是否能够解析/查找列出的库。

这应该会告诉您实际问题是什么以及 Debian 系统上缺少哪个依赖项/库。

更好的是这样做:

ldd path/to/the/executable_that_links_to_libname

因为这会向您(以及这里的我们)显示您上面省略的信息。

相关内容