首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态链接:链接路径的更改

问动态链接:链接路径的更改
EN

Stack Overflow用户
提问于 2010-03-29 11:30:03
回答 3查看 1.7K关注 0票数 0

通常情况下,当必须动态链接的库的路径在LD_LIBRARY_PATH中定义时,或者在创建二进制文件时使用-L标志来描述它。

在实际场景中,假设二进制文件已经构建并部署在客户端位置。现在,如果动态链接库路径之一的路径发生了更改。然后,我们需要向部署二进制文件的所有客户端提供一个新的make文件。

有没有其他方法,我们不需要告诉所有客户端更改其makefile,并可以在代码本身做些什么?如果yes...could有人请建议怎么做?

具有讽刺意味的是,有人向我提出了一个面试问题,但我没有得到答案。

编辑::有人专门问我在代码中可以做些什么,而不需要接触makefile。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-29 12:38:48

也许面试官想知道dlopen和dlsym?http://linux.die.net/man/3/dlsym的情况。

票数 0
EN

Stack Overflow用户

发布于 2010-03-29 12:27:25

通常,您应该只更改LD_LIBRARY_PATH,除非这可能与具有硬编码搜索路径的编译相关:rpath。

票数 1
EN

Stack Overflow用户

发布于 2010-03-29 11:34:41

使用环境变量(如MYLIBPATH ),并在makefile中使用此变量,而不是硬编码值。

因此,每个客户端都可以有自己的目录结构,只要他们正确地指定了MYLIBPATH,您的程序就会生成ok。

或者,您可以在makefile中查找库,如下所示

代码语言:javascript
复制
LIBPATH = $(shell find / -name libmylib.a -exec dirname {} ";" -quit)

myprog: myprog.c
        $(CC) myprog.c -lmylib -L$(LIBPATH)

编辑:将 locate替换为只返回与-quit选项第一次匹配的find

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2537484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档