ELF 共享库

ELF 共享库

我对在 Linux 上使用库有疑问。假设我有一个名为 MYPROG 的程序和两个库 LIBABC.SO 和 LIBXYZ.SO。MYPROG 使用“dlopen RTLD_NOW”加载模块 LIBABC.SO。“dlopen”失败,因为我正在使用 LIBXYZ.SO 的函数,而 MYPROG 未与 LIBXYZ.SO 链接。我可以将一个共享库链接到另一个共享库吗?

答案1

我相信是这样。

最重要的是,你使用的所有函数你的应用程序已定义。如果这些函数(假设这些函数位于库 A 中,但不在您的应用程序中)的定义引用库 B,则库 A 有责任链接到库 B。

答案2

找到答案了:

gcc -fpic obj1.c gcc -fpic obj2.o gcc -shared -o libABC.so -lXYZ obj1.o obj2.o

相关内容