当前位置:  开发笔记 > 编程语言 > 正文

如何使用$ ORIGIN获取RPATH来处理Code :: Blocks GCC?

如何解决《如何使用$ORIGIN获取RPATH来处理Code::BlocksGCC?》经验,为你挑选了2个好方法。

我正在尝试将包含特殊字符串$ ORIGIN的RPATH链接到使用GCC和Code :: Blocks IDE构建的可执行文件中.我指定了

-Wl,-R$ORIGIN

在项目的链接器选项中,但输出到GCC的命令行是错误的(为了清楚起见剥离):

g++ -Wl,-R

为Code :: Blocks指定此参数的正确方法是什么?



1> kbluck..:

无论谁决定制作令牌$ ORIGIN都是一个邪恶的混蛋,在程序员的地狱中应该得到一个特殊的地方.由于'$'是bash和其他脚本语言(如make)的特殊字符,因此除非小心转义,否则它会将所有内容都搞砸.更糟糕的是,根据您正在使用的构建环境,如何正确迁移的细节可能会发生变化.

在bash中,你需要在$前面加一个反斜杠:

-Wl,-R\$ORIGIN

Code :: Blocks显然也将$视为特殊.然后,无论子进程控制器Code :: Blocks发送命令来将反斜杠视为特殊.因此,反斜杠和$都需要加倍才能正确转义.因此,在Code :: Blocks链接器设置中,您需要指定:

-Wl,-R\\$$ORIGIN

......哪个输出:

-Wl,-R\\$ORIGIN

...到构建日志,但shell实际上已发送:

-Wl,-R\$ORIGIN

......如上所述产生了预期的结果.

太痛苦了.


+1只是为了邪恶的混蛋评论......这个问题给我带来了很多痛苦
export ORIGIN ='$ ORIGIN'并用火扑灭?

2> user44538..:

除了解决代码问题的kblucks答案:块......对于像我这样偶然发现这个页面寻找如何使用Make进行此操作的人.诀窍是使用额外的$符号作为转义字符并用引号括起来:

-Wl,-R,'$$ORIGIN/../lib'

这里有完整的解释: 使用ORIGIN作为动态运行时库搜索路径

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有