Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OSX运行时动态库路径搜索 在Linux Ubuntu中,可以通过动态库编译C++源代码,并在编译前通过设置环境变量$LDyRunyPATH告诉GCC编译器在哪里找到.so LIB文件。我想知道OSX中的clang编译器是否有一种等效的方法来执行这种运行时动态库路径搜索_C++_Linux_Macos_Compilation_Dynamic Linking - Fatal编程技术网

OSX运行时动态库路径搜索 在Linux Ubuntu中,可以通过动态库编译C++源代码,并在编译前通过设置环境变量$LDyRunyPATH告诉GCC编译器在哪里找到.so LIB文件。我想知道OSX中的clang编译器是否有一种等效的方法来执行这种运行时动态库路径搜索

OSX运行时动态库路径搜索 在Linux Ubuntu中,可以通过动态库编译C++源代码,并在编译前通过设置环境变量$LDyRunyPATH告诉GCC编译器在哪里找到.so LIB文件。我想知道OSX中的clang编译器是否有一种等效的方法来执行这种运行时动态库路径搜索,c++,linux,macos,compilation,dynamic-linking,C++,Linux,Macos,Compilation,Dynamic Linking,多谢各位 编辑: 下面给出的重复链接不是我想要的 我想将dylib的搜索路径编译到可执行文件中。在运行时,不应该为$DYLD\u LIBRARY\u path环境路径显式设置任何路径信息。也就是说,在回显$DYLD\u LIBRARY\u路径时,不应看到指向动态库的路径点 我通过使用 otool -L <executable> otool-L 读取可执行文件中的搜索路径 对于任何错误或缺少搜索路径,我也使用install_name_更新或添加搜索路径信息 对我来说,我正在改变我原

多谢各位

编辑:

下面给出的重复链接不是我想要的

我想将dylib的搜索路径编译到可执行文件中。在运行时,不应该为$DYLD\u LIBRARY\u path环境路径显式设置任何路径信息。也就是说,在回显$DYLD\u LIBRARY\u路径时,不应看到指向动态库的路径点

我通过使用

otool -L <executable>
otool-L
读取可执行文件中的搜索路径

对于任何错误或缺少搜索路径,我也使用install_name_更新或添加搜索路径信息

对我来说,我正在改变我原来的链接路径。我用

install_name_tool -change <old_path> <new_path> <executable>
install\u name\u工具-更改

用于链接路径设置。在这之后,我能够正确运行链接到动态库的可执行文件,而无需在$LD_LIBRARY_PATH或$LD_FALLBACK_LIBRARY_PATH内设置任何内容。

在macOS上,使用LLVM编译器“clang”,您可以使用-F{dir}和-I{dir}预处理器选项来搜索框架/库目录和包含目录。编译器将在其中查找要链接的*.dylib动态库文件所在的非标准位置

关于搜索行为,它们在Xcode中对应于名为Framework~、Header~和Library搜索路径的项目或目标“构建设置”

是否希望某个动态库链接到应用程序取决于“常规”设置“链接的框架和库”


有关如何使用@rpath@loader\u path宏管理动态加载程序(dyld)和控制依赖库的位置的更多信息,请参阅:

请参阅此处:@JeremyFriesner我查看了此链接,并通过设置dyld\u LIBRARY\u path和dyld\u FALLBACK\u LIBRARY\u path进行了尝试。这只能解决编译时的动态库路径搜索问题。在运行时执行编译后的文件时,查找库路径时仍然存在错误。这不是我想要的。
在运行时执行编译文件时,在查找库路径时仍然存在错误。
-看起来您使用的
DYLD\u LIBRARY\u path
是错误的。请注意,应该在运行可执行文件时设置该变量。@Tsyvarev我的问题不是如何设置DYLD_LIBRARY_路径。显然,将DYLD_LIBRARY_路径永久导出到.bash_概要文件或.bashrc文件可以在运行时解决此问题。但我想要的是将搜索路径直接编译成可执行文件。这可以通过在Ubuntu Linux中设置LD_RUN_路径在编译阶段实现。我想知道OSX是否有一个等效的环境变量。通过搜索OSX文档,我发现没有这样的环境变量。然而,有一种方法可以实现这一点。我将添加到OPOh中,您之前的评论令人困惑,因此看起来您在搜索
DYLD\u LIBRARY\u PATH
变量。事实上,即使使用原始措辞,你的问题显然也不是重复的。很抱歉给您带来不便。投票赞成重新开放。
   -Idirectory
       Add the specified directory to the search path for include files.
   -Fdirectory
       Add the specified directory to the search path for framework include files.