我有一个关于在Linux上使用库的问题。假设我有一个名为MYPROG的程序和两个库LIBABC.SO和LIBXYZ.SO。 MYPROG使用“dlopen RTLD_NOW”加载模块LIBABC.SO。 “dlopen”失败,因为我使用的是LIBXYZ.SO的功能,而MYPROG没有与LIBXYZ.SO链接。我可以将共享库链接到另一个共享库吗?
答案 0 :(得分:3)
不确定。如果在现有库上运行ldd
(例如在/ usr / lib /中),您将看到其中许多库链接到其他库,除非另有说明,否则共享库至少会链接到C运行时库。
当您创建libABC.so时,将其链接到libXYX.so,作为使用gcc的示例:
gcc -shared -o libABC.so -lXYZ obj1.o obj2.o