【问题标题】:Shared Library Installation共享库安装
【发布时间】:2018-07-10 18:21:40
【问题描述】:

我需要在 Ubuntu 16.04 的标准位置 (/usr/lib) 以外的位置安装共享库。我读过this article。但我无法清楚地理解它。谁能简单地解释一下我们如何实际安装和使用共享库,以便初学者可以理解。 还有这个错误信息的含义:

"./executable: 加载共享库时出错:maths.so.1: 无法打开共享对象文件:没有这样的文件或目录"

我在运行使用共享库的程序时经常收到此消息。如果您需要更多信息,请告诉我。

谢谢

PreeJackie

【问题讨论】:

  • 安装共享库是什么意思,是不是某个包的一部分。您也可以将包解压缩到任何自定义位置。
  • 我正在从两个目标代码文件创建一个共享库。创建完成后,我们需要安装它吗?

标签: linux gcc shared-libraries static-libraries dynamic-linking


【解决方案1】:

假设 foo.c 您的源文件 example.so 是 /home/lib 位置的共享库

gcc -o foo foo.c -L/home/lib -lexample -Wl,-rpath=/home/lib

foo.c - 你的 c 文件。 example.so - 您的自定义共享库。

gcc -o output_file input_file -L<shard library path> -l<library name without .so>  -Wl,-rpath=<shared library path>

【讨论】:

  • /usr/bin/ld: 找不到 -lexample collect2: error: ld returned 1 exit status
  • 如何解决这个问题? “共享库路径” -> /home/praveen/libs
  • 您的共享库在哪里?是在“home/praveen/libs”吗?在“/home/praveen/libs”上执行 ls
  • 你的库名是什么,你能告诉我们你使用的确切命令和库名吗?
  • gcc -o res demo.o -L/home/praveen/libs -lslib -Wl,-rpath=/home/praveen/libs
猜你喜欢
  • 1970-01-01
  • 2010-12-07
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多