【问题标题】:Shared library, library dependancy共享库,库依赖
【发布时间】:2011-10-01 09:57:06
【问题描述】:

是否可以提供一个共享库——在创建过程中链接到另一个共享库——对最终用户透明?

作为我的意思的一个例子:

共享库构建

g++ ... `pkg-config gtk+-2.0 --cflags` ... `pkg-config gtk+-2.0 --libs`

所需的用户构建

g++ file.cc -lfoo

libfoo.so.0 是共享库。

如果用户构建包含pkg-config gtk+-2.0 ...,我似乎只能让它工作。在创建共享对象的过程中,有没有办法让最终用户不必担心libfoo 中使用的间接库?

【问题讨论】:

  • 您是否有可能选择静态版本的 gtk 库?如果是这样,在用户链接期间也需要它。否则,如果它确实在使用共享库,则在构建时不需要它,但在运行时会需要它。

标签: c++ linux linker compilation shared-libraries


【解决方案1】:

如果你有一个共享库libABC.so 链接到libXYZ.so 那么,
在创建libABC.so 时,您必须与libXYZ.so 链接

 ld --shared -o libABC.so -L. -lXYZ

在编译应用程序时,

gcc app.c -L. -lABC

别忘了,导出库路径

export LD_LIBRARY_PATH=.

【讨论】:

  • +1 您可以设置DT_RPATH 以及-Wl,-rpath,.,而不是依赖LD_LIBRARY_PATH 环境变量。
猜你喜欢
  • 2012-02-24
  • 2012-06-19
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多