You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Makefile链接共享库,编译成功但运行时找不到库的问题

解决共享库运行时无法定位的问题

核心思路

编译时给二进制文件添加运行时库搜索路径(rpath),让程序启动时自动去指定目录查找依赖库,无需手动设置环境变量或移动库文件。

具体修改Makefile的方法

假设你的Makefile原链接命令类似如下(库文件存放在./lib目录):

myteams_cli: main.o
    $(CC) $(CFLAGS) -o $@ main.o -lmyteams -L./lib

需要在链接阶段添加-Wl,-rpath,$(LIB_DIR)参数,先定义库目录变量方便后续维护:

修改后的完整示例

# 定义库文件所在目录
LIB_DIR := ./lib

myteams_cli: main.o
    $(CC) $(CFLAGS) -o $@ main.o -lmyteams -L$(LIB_DIR) -Wl,-rpath,$(LIB_DIR)

参数说明

  • -Wl,-rpath,$(LIB_DIR):告知链接器将指定的库目录路径写入二进制文件的运行时搜索列表,程序启动时会自动到该目录寻找libmyteams.so。
  • -L$(LIB_DIR):仅用于编译阶段指定库的搜索路径,确保编译时能找到依赖库,原有配置保留即可。

验证方式

修改Makefile后重新编译,执行以下命令检查:

ldd myteams_cli

此时会看到libmyteams.so的路径已指向你指定的$(LIB_DIR)目录,直接运行./myteams_cli即可正常启动程序。

内容的提问来源于stack exchange,提问作者1ups_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:42:01