首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@executable_path不工作

@executable_path不工作
EN

Stack Overflow用户
提问于 2015-10-16 09:54:23
回答 1查看 648关注 0票数 1

我安装了SDL2。我可以将我的程序链接到

代码语言:javascript
复制
clang++ -lSDL2 -lv8 main.o test.o -o nano8

但是,出于分发原因,我想分发二进制文件,因此我将libSDL2-2.0.0.dylib复制到/myapp/lib/libSDL-2-2.0.0.dylib下,对于文档,@executable_path应该允许我链接到那个dylib,而不是/usr/local/lib,但是如果我运行

代码语言:javascript
复制
clang++ @executable_path/lib/libSDL2-2.0.0.dylib -lv8 main.o test.o -o nano8

我知道错误了

代码语言:javascript
复制
clang: error: no such file or directory: '@executable_path/lib/libSDL2-2.0.0.dylib'

如何设置dylib的搜索路径?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-16 10:18:13

这是一件很痛苦的事情。

我假设/myapp可以在文件系统中的任何位置,并且希望从@executable_path/../lib/libSDL2.dylib加载库

如果是这样,您必须使用Run路径,并在链接期间复制和修改库(这需要在每次构建时都完成):

  1. cp /usr/local/lib/libSDL2.dylib build_dir/lib
  2. 使用.dylib更改install_name_tool的安装名称: install_name_tool -change /usr/local/lib/libSDL2.dylib @rpath/libSDL2.dylib构建_dir/lib/libSDL2.dylib
  3. 链接到build_dir/lib/libSDL2.dylib,并在链接期间设置rpath: cd clang++ _dir/bin -o obj_dir/main.o obj_dir/test.o -o nano8 -L ./lib -lv8 -lSDL2 -Xlinker -rpath -Xlinker“@-lv8_path/ ../lib”

我还没有对此进行测试,可能会出现错误。使用otool -L检查二进制和库中的库引用,以便在此问题上居家。

更清洁的方式:

将二进制文件安装到/usr/local/bin中,并提供要安装到/usr/local/lib中的任何.dylib。这更好,因为/usr/local是用户二进制文件的地方,您不需要上面的faff。

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

https://stackoverflow.com/questions/33167503

复制
相关文章

相似问题

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