温馨提示×

ubuntu gcc怎么链接库

小樊
50
2026-09-10 01:14:10
栏目: 智能运维

在 Ubuntu 下使用 gcc 链接库,常见情况如下:


一、链接系统已安装的标准库

大多数标准库(如 libm、libpthread)系统已自带,只需在编译时指定:

gcc main.c -o main -lm

说明:

  • -l 后面跟库名(去掉 lib 前缀和 .so/.a 后缀)
  • libm.so → -lm
  • libpthread.so → -lpthread

二、链接第三方库(已安装)

如果库安装在标准路径(/usr/lib, /usr/local/lib):

gcc main.c -o main -lxxx

如果是头文件不在标准路径:

gcc main.c -o main -I/usr/include/xxx -lxxx

三、链接自己编译的库

1️⃣ 编译静态库(.a)

gcc -c mylib.c -o mylib.o
ar rcs libmylib.a mylib.o

使用:

gcc main.c -L. -lmylib -o main

2️⃣ 编译动态库(.so)

gcc -fPIC -shared mylib.c -o libmylib.so

使用:

gcc main.c -L. -lmylib -o main

运行时若提示找不到 .so:

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

或安装到系统:

sudo cp libmylib.so /usr/local/lib
sudo ldconfig

四、常用 gcc 链接参数说明

参数 作用
-lxxx 链接 libxxx
-L/path 指定库搜索路径
-I/path 指定头文件路径
-static 强制静态链接
-Wl,--no-as-needed 防止库被优化掉

五、查看可执行文件依赖

ldd main

六、常见错误

❌ undefined reference to xxx
→ 没加 -lxxx 或链接顺序不对(库放后面)

❌ cannot find -lxxx
→ 没安装库或 -L 路径不对


如果你有具体库名或报错信息,可以贴出来,我帮你精确解决。

0 踩