标签: dylib

如何构建apple的opensource libc?

我正在尝试在我的OS X 10.6.8笔记本电脑上构建apple的opensource libc(来自http://www.opensource.apple.com/source/Libc/Libc-763.11/).这是为了从本质上获得本地生成的/usr/lib/libSystem.B.dylib副本,我打算进一步尝试.

我看到了几个基本的障碍(除非,显然,我遗漏了一些基本的东西):

  • 没有关于如何进行构建的说明.我在上面引用的URL中有几个Makefile,但是当我尝试直接制作时,它们无法构建:

$ make -f Makefile

Makefile:14:***缺少分隔符.停止.

  • 我怀疑可供下载的来源不完整.从Apple没有透露所有变化的意义上来说并不完整,但在某些意义上说不完整,因为有些文件(大概)没有被Apple修改过,因此不包括在集合中.例如,我没有看到"open"调用的实现(在gnu libc层次结构中,可以在io/open.c中获得)

我在谷歌搜索后找到的最接近的参考是:http://www.projectosx.com/forum/index.php? showtopic = 1922&st = 0&p = 12457&#entry12457 但它仍然不够接近我的口味!

有什么指针吗?

谢谢!

macos libc dylib

7
推荐指数
1
解决办法
4193
查看次数

我可以在我的可执行文件中包含dylib吗?

(是的,我理解dylib的重点是动态加载,但我正在尝试创建一个自包含的包.)

我有一个可执行文件,我从命令行构建 - 在OS-X/Lion上,如果重要的话.我将可执行文件发送给了朋友,但他无法运行它,因为他没有安装库.他宁愿安装库,所以现在我正在尝试创建一个包含原始可执行文件和所有必需库的包.

我习惯于在XCode(IDE)中工作,并且不熟悉make和命令行构建工具及其选项.(我根据网上的非常好的指示构建了这个工具.)因此,明确的指示会很有帮助.

谢谢!

macos build dylib

7
推荐指数
1
解决办法
4972
查看次数

brew doctor:警告:在/ usr/local/lib中发现了未编号的dylib

赛跑

酿造医生

给我这个:

警告:在/ usr/local/lib中找到了未编号的dylib.如果您没有故意将它们放在那里,那么在构建Homebrew公式时可能会出现问题,并且可能需要删除它们.

意外的dylib:

/usr/local/lib/libqmi_api.dylib

/usr/local/lib/libvousb.dylib

有谁知道这些dylib是什么?

homebrew dylib osx-mountain-lion

7
推荐指数
1
解决办法
7548
查看次数

在MonoMac应用程序中包含自定义dll和dylib

背景:我的MonoMac应用程序使用sqlite3.0.8.6.dylib的自定义构建.

我需要确切的步骤让MyApp.app使用这个dylib.

以下是我采取的一些步骤:

  1. 将dylib复制到MyApp.app/Contents/SharedSupport.(相关问题:这是第三方dylibs的首选位置还是MyApp.app/Contents/Frameworks首选?)

  2. 更改了库的已安装名称,以使其与新位置匹配.

    MyApp.app/Contents/SharedSupport> otool -L libsqlite3.0.8.6.dylib 
    libsqlite3.0.8.6.dylib:
        @executable_path/../SharedSupport/libsqlite3.0.8.6.dylib (compatibility version 9.0.0, current version 9.6.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
    
    Run Code Online (Sandbox Code Playgroud)

问题

  1. MyApp.app/Contents/MacOS/MyApp不直接引用dylib,因此我无法使用install_name_tool指向新的库位置.我相信该库是由System.Data.Sqlite.dll引用的.
  2. 我想在启动器脚本中覆盖DYLD_FALLBACK_LIBRARY_PATH, MonoMac现在使用二进制启动器(MyApp.app/Contents/MacOS/MyApp),而不是脚本,所以我在那里运气不好.

MonoMac众神会帮助解决一个简单的解决方案吗?我花了几个月的时间,一直在努力让它发挥作用.

请提供确切的步骤 - 这个问题与细节有关.

mono bundle dylib monomac

7
推荐指数
1
解决办法
3436
查看次数

不兼容的库版本:libfontconfig.1.dylib 13(而不是15)

使用Mountan Lion/Mavericks在Mac中使用Octave,当我尝试运行hist()或其他一些命令时,错误消息显示:

Incompatible library version: libfontconfig.1.dylib requires version 15.0.0 
or later, but libfreetype.6.dylib provides version 13.0.0
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到合适的图书馆?

macos octave dylib

7
推荐指数
1
解决办法
4551
查看次数

Swig致命Python错误:PyThreadState_Get:没有当前线程中止陷阱:6使用Python 2.7.5

在我升级Python之前,我使用了Python 2.7.2,当我将生成的动态库my_lib导入python文件时,Swig没有问题.

现在使用Python 2.7.5我可以使用Swig生成动态库my_lib但是当我在python文件中导入这个库时,我会收到:

致命的Python错误:PyThreadState_Get:没有当前线程中止陷阱:6

随着崩溃报告:

线程0 Crashed :: Dispatch queue:com.apple.main-thread

0 ____ libsystem_kernel.dylib ________ 0x00007fff897c2212 __pthread_kill + 10

1 _____ libsystem_c.dylib ____________ 0x00007fff8b5c9b24 pthread_kill + 90

2 _____ libsystem_c.dylib ____________ 0x00007fff8b60df61 abort + 143

我的python路径解释器是:

/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

我在报告中注意到的另一个重要事项是:

libmylib.so ---------- 0x1004c3000 - ----------- 0x1005d0fff --- org.python.python(2.7.2 - 2.7.2) - /System/Library /框架/ Python.framework /版本/ 2.7/Python的

我能做什么?

python swig dylib

7
推荐指数
1
解决办法
9052
查看次数

install_name_tool无法使用更改"因为更大的更新加载命令不适合"

我需要重新链接一个文件install_name_tool.有问题的文件允许我更改其中一个dylib路径,但是当我更改第二个(7个)时,我收到此错误:

install_name_tool: changing install names or rpaths can't be redone for: some/library (for architecture i386) because larger updated load commands do not fit (the program must be relinked, and you may need to use -headerpad or -headerpad_max_install_names)
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索后,我发现文件中的新路径没有足够的空间,我可能能够使用该ld工具,或者libtool解决这个问题.但是,我无法弄清楚如何.我没有这个库的源代码,所以我无法重新编译它.

没有办法让我更新这个文件的所有dylib路径?任何帮助将非常感谢!


我在osx 10.10我正在使用的命令: install_name_tool -change old/dylib/path.dylib new/dylib/path.dylib file/to/update

dylib ld libtool install-name-tool

7
推荐指数
1
解决办法
1888
查看次数

尝试使用迦太基合并静态框架

  • carthage version:0.25.0
  • xcodebuild -version:8.3.3
  • 你在用--no-build吗?没有
  • 你在用--no-use-binaries吗?没有
  • 你在用--use-submodules吗?没有
  • 你在用--cache-builds吗?没有

Cartfile github "rs/SDWebImage" github "AgileBits/onepassword-extension" github "hsousa/HCSStarRatingView" github "sugoi-wada/facebook-ios-sdk" "780a72cd6086c57939d83a7143462ae13dfb9a74" github "CSStickyHeaderFlowLayout/CSStickyHeaderFlowLayout" github "card-io/card.io-iOS-source"

我可以使用构建脚本构建我的依赖项,如此处的文档中所述.现在我正在尝试将我的静态框架合并到一个动态框架中并遇到问题.

首先,我将一个框架添加到dylib目标,我已经禁用了bitcode并添加了以下内容OTHER_LDFLAGS:-all_load, -ObjC.我从小开始HCSStarRatingView.它已添加到他们的dylib目标和构建.

为了测试这个新的组合框架,我添加了一个app目标.我可以导入框架目标,应用程序目标可以识别它.但是,当我尝试声明一个新视图时,let view = HCSStarRatingView(frame: .zero)我收到以下错误:Use of unresolved identifier 'HCSStarRatingView'.

我假设我没有HCSStarRatingView直接导入,因为它现在是我的框架目标的一部分.我还假设我不必向动态框架目标的伞头添加任何内容来暴露内部链接的静态框架.这些假设是否正确?知道我在这里可能缺少什么吗?

xcode dylib static-linking ios carthage

7
推荐指数
1
解决办法
329
查看次数

Xcode 4:由于iPad模拟器的dylib错误,无法使用Enable Guard Malloc

在Xcode 4.x中,我已经将我的Run方案编辑为'Enable Guard Malloc',因为我有一个我需要跟踪的非描述性malloc错误.我知道我需要在模拟器中运行才能使用此功能.但是,当我这样做时,应用程序立即冻结,Xcode向我显示一个堆栈跟踪,如下所示:

Xcode 4.x中的堆栈跟踪

我已经用Google搜索了解决方案,但到目前为止还没有任何乐趣.据我所知,我应该在我的方案中设置一个环境变量:

DYLD_INSERT_LIBRARIES  ->  /usr/lib/libgmalloc.dylib
Run Code Online (Sandbox Code Playgroud)

然而,这并没有解决问题.我也试过'lsystem'作为值,但这也没有用.

任何人都可以建议解决这个dylib问题,或者推荐一个替代'Enable Guard Malloc'来识别malloc'd堆区域被超出的位置?

UPDATE

为了澄清,这是我正在处理的错误类型:

malloc: *** error for object 0x2b4b54: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
Run Code Online (Sandbox Code Playgroud)

我已经尝试设置一个符号断点malloc_error_break,但它仍然在内存问题上"随机"断开,而不是超出分配区域.

malloc xcode dylib guard

6
推荐指数
1
解决办法
1453
查看次数

dlopen 有没有办法在 iOS 上重新加载 dylib 文件?

正如标题所说......我对dlopen(). 我知道应用商店不允许这样做,但我对 iOS 上的这个感到好奇。

我的问题是我可以创建一个 .dylib 文件,我可以在运行时使用以下代码加载这个文件

char *dylibPath = "/Applications/myapp.app/mydylib2.dylib";

void *libHandle = dlopen(dylibPath, RTLD_NOW);
if (libHandle != NULL) {
    NSString * (*someMethod)() = dlsym(libHandle, "someMethod");
    if (someMethod != NULL)  {
        NSLog(someMethod());
    }
    dlclose(libHandle);
}
Run Code Online (Sandbox Code Playgroud)

这是取自这里

我遇到的问题是,如果我更改 mydylib2.dylib,dlopen则不会加载重新编译的 .dylib 文件。相反,它解析旧版本的函数someMethod

例如,如果someMethod第一次返回@"Hello"并且我将其更改为@"Hello World"并重新编译,则上面的代码将始终返回,@"Hello"直到我在模拟器中重新启动应用程序。

有谁知道为什么会这样?并建议一个解决方法,以便可以在运行时重新加载这个 .dylib?

dylib dlopen ios

6
推荐指数
1
解决办法
2877
查看次数