c 语言 指定链接库位置,如何使我的应用程序链接库独立于其位置?

我已经构建了一个共享库(即libabc.so)和一个myapp使用我的共享库的可执行文件(即).我已将共享库和我的可执行文件放在我的文件系统中但是当我运行可执行文件时它会给我以下错误

error while loading shared libraries: /.so cannot open shared object file: No such file or directory.

现在我的开发环境是我有一个不同的目标文件系统,它是在~/targetfs构建我的共享库之后放置的,我正在安装它~/targetfs/usr/local/abc/lib.在链接我的应用程序期间,我给它

LDFLAGS += -L~/targetfs/usr/local/abc/lib

我的应用程序构建良好 但是当我在~/targetfs我的文件系统环境中运行我的应用程序时,我的应用程序在加载共享库时会抱怨错误:

/home/user/targetfs/usr/local/abc/lib/libabc.so: can not open shared object file. No such file or directory exist.

现在,当然路径我的应用程序正在寻找不存在的共享库,但我想我的应用程序是独立的这条道路的,而是应该寻找我的共享库/lib,/usr/lib,/usr/local/lib或LD_LIBRARY_PATH位置.

如何使我的应用程序链接库独立于其位置?

我的共享库和应用程序的Makefile如下所示.

--------------共享库makefile.(省略不必要的信息)

CC = $(CROSS_COMPILE)gcc

CFLAGS = -Wall -shared -fpic

LDFLAGS = -Xlinker --gc-sections --allow-shlib-undefined

LIBRARY = libabc.so

OBJ_DIR = obj

SRC_DIR = src

CHK_DIR_EXISTS = test -d

MKDIR = mkdir -p

# Project Source Files

C_SOURCES += $(SRC_DIR)/abc.c

OBJECTS += $(OBJ_DIR)/abc.o

INCLUDES += -Iinc

$(LIBRARY): $(OBJECTS)

@echo ""

@echo "Linking..." $(LIBRARY)

@$(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $(OBJ_DIR)/$(LIBRARY)

----------应用程序Makefile(省略不必要的信息)

LDFLAGS += $(TARGETFS)/usr/local/abc/lib/libabc.so \

-lpthread -lrt

任何想法我的Makefiles中缺少什么.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值