标签: dylib

dyld: 库未加载:..... 如何正确告诉 GCC 编译器在哪里可以找到另一个静态库?

我编写了 C 程序,计算波函数的时间步迭代,以求解时间相关的 Schr\xc3\xb6dinger 方程。\n在某些步骤中,我需要进行前向和后向快速傅立叶变换 (FFT),我使用了库Kissfft。\ n(https://github.com/mborgerding/kissfft

\n

我的程序结构有点像这样:

\n
    \n
  • TDSE(工作目录)\n
      \n
    • 模块
    • \n
    • 包括
    • \n
    • 脚本
    • \n
    • 测试\n
        \n
      • inttest_analytical.c
      • \n
      \n
    • \n
    • 亲吻\n
        \n
      • libkissfft-double.dylib
      • \n
      \n
    • \n
    \n
  • \n
\n

现在,当我编译inttest_analytical.c它时,它可以工作。\n但是当之后尝试运行可执行文件时,我收到以下错误:

\n
(base) user TDSE % ./inttest_analytical\ndyld: Library not loaded: libkissfft-double.dylib\n  Referenced from: /Users/user/Documents/Uni/HU Berlin/Computational Physics 2/Project 3 - Time-dependet Schroedinger Equation/TDSE/./inttest_analytical\n  Reason: image not found\nzsh: abort      ./inttest_analytical\n
Run Code Online (Sandbox Code Playgroud)\n

运行后otool -L ./inttest_analytical我得到

\n
/inttest_analytical:\n        libkissfft-double.dylib (compatibility version 0.0.0, …
Run Code Online (Sandbox Code Playgroud)

c gcc dylib static-libraries kissfft

5
推荐指数
1
解决办法
2835
查看次数

OSX加载dylib Lua模块

尝试在OSX上加载Lua模块时,我收到以下错误.

lua: level1.lua:1: module 'libexpand_luaLib' not found:
    no field package.preload['libexpand_luaLib']
    no file './libexpand_luaLib.lua'
    no file '/opt/local/share/lua/5.1/libexpand_luaLib.lua'
    no file '/opt/local/share/lua/5.1/libexpand_luaLib/init.lua'
    no file '/opt/local/lib/lua/5.1/libexpand_luaLib.lua'
    no file '/opt/local/lib/lua/5.1/libexpand_luaLib/init.lua'
    no file './libexpand_luaLib.so'
    no file '/opt/local/lib/lua/5.1/libexpand_luaLib.so'
    no file '/opt/local/lib/lua/5.1/loadall.so'
stack traceback:
    [C]: in function 'require'
    level1.lua:1: in main chunk
    [C]: ?
Run Code Online (Sandbox Code Playgroud)

lua解释器正在尝试加载.so文件而不是.dylib文件.我的印象是.dylib是.so的OSX等效(略有变化).所以我希望Lua解释器能够查找.dylib文件.

我是否应该尝试将我的库编译成OSX上的.so?(如果是这样的话?)或者我应该更改与lua解释器相关的内容?

macos lua shared-libraries dylib

4
推荐指数
1
解决办法
1487
查看次数

如何将框架libz.dylib和libxml2.dylib添加到MonoTouch中的gcc_flags参数?

我有一个Objective C静态库,我试图使用btouch导入MonoTouch.我遇到的问题是,库依赖于libz.dylib和libxml2.dylib,我不知道如何在我的MonoTouch应用程序中包含这些框架.

我在XCode项目中测试了静态库,这个测试应用程序编译并正确运行.我现在正在尝试在MonoTouch中构建完全相同的示例应用程序,并且在获取正确的gcc_flags参数时遇到问题,以便包含所有依赖项.

在XCode应用程序中,需要包含以下框架:

 UIKit.framework
 CFNetwork.framework
 CoreGraphics.framework
 Foundation.framework
 MobileCoreServices.framework
 SystemConfiguration.framework
 libz.dylib
 libxml2.dylib
Run Code Online (Sandbox Code Playgroud)

此外,在XCode中,我必须包含以下搜索路径才能找到所有必需的头文件:"$(SDK_DIR)"/ usr/include/libxml2

现在,在MonoTouch中,我在构建选项下的gcc_flags中设置了以下内容:

 -v -v -v -gcc_flags "-framework CFNetwork -framework CoreGraphics -framework Foundation -framework MobileCoreServices -framework SystemConfiguration -I${ProjectDir}/lib/include -I$(SDK_DIR)/usr/include/libxml2 -L${ProjectDir}/lib/ -lOfflineRequest -force_load ${ProjectDir}/lib/libOfflineRequest.a"
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我得到一个很长的链接错误列表,据我所知,这是由链接期间未包含的libz.dylib和libxml2.dylib引起的.有谁知道如何确保这些包含在MonoTouch中?

c# dylib monodevelop xamarin.ios ios

4
推荐指数
1
解决办法
3012
查看次数

SVN不会在全新的Mac OSX安装上运行

我有一个全新的Mac OS 10.7.2安装.我已经安装了SVN,但是,当我尝试调用Subversion时,我收到错误:

dyld: Library not loaded: /usr/lib/libpq.5.dylib
  Referenced from: /opt/subversion/bin/svn
  Reason: no suitable image found.  Did find:
    /usr/lib/libpq.5.dylib: no matching architecture in universal wrapper
    /usr/lib/libpq.5.dylib: no matching architecture in universal wrapper
Run Code Online (Sandbox Code Playgroud)

我试图搜索错误,看起来该库主要由PostreSQL(我也已安装)使用,但运行正常.我有点困惑为什么SVN会试图调用这个库,还有为什么它失败了.

各种用户组在线声明解决方案是创建一个指向"真正的"PostgreSQL安装的符号链接,但我已经做到了.(另请参阅:subclipse)我已经重新安装了SVN和PostgreSQL两次,没有任何错误.任何帮助,将不胜感激.

svn postgresql macos dylib

4
推荐指数
1
解决办法
2164
查看次数

我想知道IPA文件的执行流程

我有一个IPA文件,其中包含info.plist,可执行文件,package.info,供应证书,动态库,代码资源等.我想知道首先执行哪个文件以及执行发生的顺序.我想在IPA中添加一些内容,为此我需要了解现有IPA的工作原理.

提前致谢.

iphone executable dylib ipa

4
推荐指数
1
解决办法
1670
查看次数

在Xcode中调试时如何判断加载了哪些dylib?

我在使用某个特定的库时遇到了一些麻烦,我正在尝试测试旧版本是否能解决我的问题.使用存储在.app文件附近的dylib文件动态链接库.这些dylib文件到处都是,我不完全确定我的应用程序实际上正在使用我试图让它使用的那些.

在visual studio上,您可以在调试应用程序时轻松查看已加载的dll文件列表.Xcode中是否有类似的功能?

xcode dylib dynamic-linking

4
推荐指数
1
解决办法
1771
查看次数

Clang:输出32位和64位组合.dylib

我在执行file命令时看到了32位和64位的dylib .我如何在Clang建造一座?

-m32标志创建32位dylib,-m64创建64位,但使用它们都不起作用.

编辑:例如,这是file我正在尝试构建的dylib类型的输出

file /Library/Frameworks/SDL.framework/Versions/A/SDL 
/Library/Frameworks/SDL.framework/Versions/A/SDL: Mach-O universal binary with 2 architectures
/Library/Frameworks/SDL.framework/Versions/A/SDL (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
/Library/Frameworks/SDL.framework/Versions/A/SDL (for architecture i386):   Mach-O dynamically linked shared library i386
Run Code Online (Sandbox Code Playgroud)

macos cpu-architecture clang dylib

4
推荐指数
1
解决办法
1918
查看次数

在XCode中静态链接OpenSSL

我正在尝试链接libssl.alibcrypto.aXCode命令行项目中的静态库[在Link Binary With Libraries下].我在搜索路径中包含了Openssl头文件.

编译成功但执行失败dyld: Library not loaded: /usr/local/ssl/lib/libcrypto.1.0.0.dylib.

当我静态链接它时,为什么它会寻找dylib?怎么解决这个问题?

任何帮助都会很明显.

xcode openssl dylib static-linking

4
推荐指数
1
解决办法
4316
查看次数

macOS Mach-O dylib LC_ID_DYLIB名称或install_name的意义是什么?

我正在开发一个在Xcode之外开发的macOS dylib框架,我正在尝试理解该install_name选项的重要性.

例如,我可以将该LC_ID_DYLIB部分设置为name更像是在应用程序包的框架中使用install_name类似的参数.

clang++ ... -install_name @executable_path/../Frameworks/somelib.framework/Versions/somelib ...
Run Code Online (Sandbox Code Playgroud)

然后otool -l我可以看到我的名字已经在二进制文件中设置,与默认值不同(默认情况下与-o选项匹配).

otool -l somelib
...
          cmd LC_ID_DYLIB
      cmdsize 96
         name @executable_path/../Frameworks/somelib.framework/Versions/A/somelib (offset 24)
   time stamp 1 Wed Dec 31 19:00:01 1969
      current version 1.0.0
compatibility version 1.0.0
....
Run Code Online (Sandbox Code Playgroud)

所以我理解如何设置它,但我不明白的是用什么值来确定它应该是什么,我也找不到任何文档.

我可以看到为什么这些LC_LOAD_DYLIB部分需要有关在哪里找到二进制文件的信息(因为这些部分引用了其他二进制文件),但为什么dylib需要有关在哪里找到自己的信息?链接它的二进制文件应该是找到它的二进制文件吗?

那么macOS dylib究竟是LC_ID_DYLIB install_name做什么的呢?

macos mach-o clang dylib mach

4
推荐指数
1
解决办法
749
查看次数

锈货物dylib澄清

我有一个Rust项目,我想作为dylib嵌入到另一个应用程序中。我已经crate_type = ["dylib"]设置了Cargo.toml,但是不确定是否应该这样做cdylib

当我构建项目时,它会按预期产生libfoo.dylibin target/debug,但查看otool -L它也会与libfoo.dylibin 链接target/debug/deps/。如果要在另一个应用程序中使用它,是否需要同时提供两个dylib?

同样,当crate类型cdylib为时,它也会产生两个dylib,但是deps中的一个将在文件名的末尾添加一个哈希值。我不确定这两种板条箱类型之间的区别是什么。

我可以只使用rustc来避免获得两个dylib,但是我想使用货物。建议将Rust作为dylib嵌入其他应用程序的推荐方式是什么?

如果那很重要,我正在macOS 10.12上使用Rust

embed macos dylib rust rust-cargo

4
推荐指数
1
解决办法
964
查看次数