Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Xcode中设置dyld_library_path

如何在Xcode中设置dyld_library_path
EN

Stack Overflow用户
提问于 2013-02-14 21:15:55
回答 1查看 16.3K关注 0票数 3

我对Xcode和Mac环境很陌生。我正在使用一些动态和静态库,如boost、Clucene等。

MyApp.app/Content/Resources

我想把这个路径设置为应用程序的dyld_library_path。我试着编辑XXX.plist文件,比如

DYLD_LIBRARY_PATH /mypath/xxx

并在Xcode中设置环境变量和参数,没有任何效果。

但是,如果我像下面这样运行一个shell脚本,而不双击我的.dmg中的应用程序,它就能工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
clear
cd /Volumes/xxx/myapp.app/Contents/MacOS
export DYLD_LIBRARY_PATH="/Volumes/xxx/myapp.app/Contents/Resources"
./myapp

我相信这不是正确的做法。每次我执行我的应用程序时,是否有正确的方法来设置dyld_library_path?

编辑:如果你把你所有的库拷贝到客户端/usr/lib路径,它也能工作.我想这也不是一个合适的方法。

EN

回答 1

Stack Overflow用户

发布于 2013-02-26 23:51:10

设置DYLD_LIBRARY_PATH并不是解决这个问题的最佳方法。它是围绕这样一个事实工作的:您错误地告知了dyld在哪里可以找到您的库。

如果您运行otool -L MyApp.app/Contents/MacOS/MyApp,您将看到MyApp想要加载的库的路径。如果在指定的路径上找不到任何库,那么dyld将在DYLD_FALLBACK_LIBRARY_PATH指定的位置查找库。设置DYLD_LIBRARY_PATH会使dyld在上面的otool命令返回的路径之前在给定的位置查找库。

解决此问题的最佳方法是让应用程序指定库的正确位置,以便不必设置DYLD_LIBRARY_PATH。要做到这一点,您需要执行以下操作:

  1. 将您要捆绑在应用程序中的每个库的库标识符设置为@rpath-relative值。您可以使用install_name_tool -id @rpath/libFoo.dylib libFoo.dylib来完成这个任务。
  2. 添加复制文件生成阶段,以便将库复制到应用程序包装器中。MyApp.app/Contents/Frameworks是一个典型的位置。应该避免使用MyApp.app/Contents/Resources,因为二进制文件不是通常意义上的资源。
  3. 链接应用程序时指定运行路径搜索路径。这为链接器提供了用于解析它在任何加载命令中遇到的任何@rpath变量的路径列表。如果要将库复制到MyApp.app/Contents/Frameworks,则需要指定@loader_path/../Frameworks的运行路径搜索路径。您可以通过应用程序目标的Xcode中的LD_RUNPATH_SEARCH_PATHS (Runpath Search )配置设置来实现这一点。

在完成所有这些操作之后,您应该能够重新运行上面提到的otool命令,并看到您的库的路径使用@rpath-relative路径。然后,您应该能够运行otool -lV MyApp.app/Contents/MacOS/MyApp,并看到以@loader_path/../Frameworks值指定的LC_RPATH load命令。最后,您应该能够运行您的应用程序,并看到它可以在其框架目录中找到库,而无需设置DYLD_LIBRARY_PATH

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

https://stackoverflow.com/questions/14888668

复制
相关文章
Pulumi 如何在 Windows 环境中设置
没有安装文件, Pulumi 没有安装文件,所以你不能按照下载后安装的方式来进行配置。
HoneyMoose
2021/05/21
2K0
Pulumi 如何在 Windows 环境中设置
设置Xcode自动管理证书文件
许多的开发者依然维护着旧的项目,他们也许需要选择一个证书签名去编译。这个问题讨论怎么在Xcode设置来自动化选择证书通过他们默认的设置,这个问题适用于IOS和MAC的开发人员
君赏
2018/08/31
3.3K0
设置Xcode自动管理证书文件
如何在django中设置定时任务?
Django 作为后端Web开发框架,有时候我们需要用到定时任务来或者固定频次的任务来执行某段代码,这时我们就要用到Celery了。Django中有一个中间件:Django-celery
BigYoung小站
2020/05/04
2.7K0
如何在 Linux 中设置主机名
设置主机名,设置主机名成功后,不要忘记也要在 hosts 文件中配置下 127.0.0.1.
HoneyMoose
2020/05/19
3.7K0
如何在 Linux 中设置主机名
Xcode中和symbols有关的几个设置
其实被这个问题困扰了好久,不过秉承着三分钟热度的新年新气象,还是要多弄懂一点(⊙_⊙)ゞ
且行且珍惜_iOS
2022/05/13
2K0
Xcode中和symbols有关的几个设置
如何在 Linux 中安装、设置和使用 SNMP?
SNMP(Simple Network Management Protocol)是一种用于管理和监控网络设备的协议。它允许网络管理员通过远程方式收集设备的运行状态、性能数据和错误信息,以便进行故障排除和网络优化。在Linux系统中,我们可以安装、设置和使用SNMP来监控和管理服务器和网络设备。本文将详细介绍在Linux中安装、设置和使用SNMP的步骤和方法。
网络技术联盟站
2023/06/25
3.2K0
如何在 Linux 中安装、设置和使用 SNMP?
关于如何在idea中设置文档注释模板
操作:File -> Settings - > Editor -> File and Code Templates -> Files -> Class在右边的文件框里编辑需要注释的模板,应用保存之后,当我们创建类的时候就会自动生成注释。如果要设置接口的,可以选择Interface文件。
海拥
2021/08/23
4.7K0
如何在Linux中设置Java主目录路径?
Java is a popular programming language and framework in the IT industry. There are a lot of applications developed with Java. Java requires Java Development Kit to develop applications. Compiled java applications can run on systems those are installed Java Runtime Environment a.k.a JRE. We will look in this post on how to set and check JRE or JDK or Java Home Path.
用户7886150
2021/02/02
5.2K0
如何在 Linux 中设置 SSH 无密码登录?
SSH(Secure Shell)是一种安全网络协议,用于在不安全的网络上安全地进行远程登录和执行命令。在 Linux 系统中,使用 SSH 可以方便地远程连接到其他计算机,并且还可以通过配置无密码登录来提高操作的便利性和安全性。本文将介绍如何在 Linux 中设置 SSH 无密码登录。
网络技术联盟站
2023/09/01
3.8K0
如何在 Linux 中设置 SSH 无密码登录?
Xcode11更改启动页设置方法
新开了个项目,发现之前的启动页怎么也调不好,后来发现配置里边少了一行,所以整理一下,我使用的xcode版本是11.4
用户1219438
2020/08/11
9290
Xcode11更改启动页设置方法
如何在CDH中为Kafka设置流量配额
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- 从0.9版本开始,Kafka集群新增了针对生产和消费请求进行配额(quotas)控制。本篇文章Fayson主要介绍如何在CDH中为Kafka设置流量配额。 文档概述 1.环境准备 2.Producer和Consumer流量配额测试 3.总结 测试环境
Fayson
2018/07/13
2.8K0
如何在 Linux 中设置 SSH 无密码登录
SSH(Secure SHELL)是一种开源且可信的网络协议,用于登录远程服务器以执行命令和程序。
数据科学工厂
2023/09/06
6690
如何在 Linux 中设置 SSH 无密码登录
如何在 Chrome 中设置HTTP服务器?
首先,定义问题:在 Chrome 浏览器中设置HTTP服务器主要涉及到修改网络设置,使用HTTP服务器可以帮助用户访问网络内容,提高网络速度或者保护隐私。
华科云商小徐
2023/10/25
5350
如何在 Linux 中安装、设置和使用 SNMP?
在Linux系统中,我们首先需要安装SNMP软件包。具体的安装命令可能因您使用的Linux发行版而有所不同。以下是一些常见的发行版的安装命令示例:
网络技术联盟站
2023/09/06
3.3K0
如何在 Linux 中安装、设置和使用 SNMP?
如何在 PowerBI 中设置数值标签的动态颜色
PowerBI 的数值标签从 2022 年 8 月开始支持动态颜色了。 首先,需要下载最新版的 Power BI Desktop。 渐变色方式 效果如下: 在【视觉对象】【数据标签】【值】【颜色】下设置即可。如下: 动态标记最大值与最小值 还可以用度量值进行设置,例如标记最大值与最小值。度量值如下: View.Color = 注意 这里的 DAX 用到的《BI 真经》视图型计算方法,不再重复。 这样就可以通过度量值,动态标记颜色,如下: 扩展创意用法 太多标签比较乱,可以仅仅显示需要的标签。创建
BI佐罗
2022/12/18
17.5K0
如何在 PowerBI 中设置数值标签的动态颜色
如何在Linux系统中设置定时重启EasyNVR服务?
为满足用户的场景需求,我们的Easy系列视频平台均可提供Windows与Linux版本,如果有用户需要ARM版,我们也可以根据需求编译成ARM版。
TSINGSEE青犀视频
2022/03/03
5.1K0
如何在VueJS应用程序中设置Toast通知
通知是开发者提升应用程序互动性和改善用户体验的强大工具。通过利用通知,开发者可以在用户与应用程序互动的同时,有效地向用户传达重要事件。
前端达人
2023/09/11
2730
如何在VueJS应用程序中设置Toast通知
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
28.9K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
点击加载更多

相似问题

如何在macos上设置LD_LIBRARY_PATH/DYLD_LIBRARY_PATH

20

在eclipse中设置不同的构建目标,如Xcode中的

21

当我无法设置ImageMagick时,如何在macOS上安装`DYLD_LIBRARY_PATH`?

151

如何在方法中设置参数,如设置类型

21

在MacOSX塞拉利昂上设置DYLD_LIBRARY_PATH (CoolProp)

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文