Linux 系统中并不使用 DLL(动态链接库)文件,这是 Windows 操作系统中的一个概念。在 Linux 中,相应的概念是共享库(Shared Libraries),通常以 .so
(即“shared object”)为文件扩展名。
共享库是一组编译后的目标代码,可以在多个程序之间共享。这有助于减少应用程序的大小,并允许多个程序使用相同的功能而无需各自复制代码。
.a
):在编译时链接到程序中,成为程序的一部分。.so
):在运行时链接,可以被多个程序共享。在编译程序时指定要链接的库,使用 -l
选项后跟库的名称(不包括 lib
前缀和 .so
后缀),以及 -L
选项指定库文件的搜索路径。
gcc -o my_program my_program.c -L/path/to/libraries -lmylib
确保动态库位于系统的库搜索路径中,或者在运行程序时使用 LD_LIBRARY_PATH
环境变量指定库的路径。
export LD_LIBRARY_PATH=/path/to/libraries:$LD_LIBRARY_PATH
./my_program
或者直接在命令行中设置:
LD_LIBRARY_PATH=/path/to/libraries ./my_program
问题:找不到共享库。
原因:库文件不存在于系统的标准库路径中,或者 LD_LIBRARY_PATH
没有正确设置。
解决方法:
/usr/lib
或 /usr/local/lib
。ldconfig
更新缓存。LD_LIBRARY_PATH
环境变量。sudo cp libmylib.so /usr/local/lib/
sudo ldconfig
# 或者
export LD_LIBRARY_PATH=/path/to/libraries:$LD_LIBRARY_PATH
通过这些步骤,可以在 Linux 系统中成功调用和使用共享库。
领取专属 10元无门槛券
手把手带您无忧上云