我正在使用使用FTP和SFTP传输的Cocoa应用程序,我发现实现此目的的最佳方法是使用libcurl。现在我很确定Mac OS X没有安装libcurl,即使它确实安装了它很可能不是用libssh构建的,我也需要它。
我能想到的唯一解决方案是使用预先构建的libcurl版本发送我的应用程序。创建某种自定义安装程序以检查用户计算机的libcurl,并在必要时安装预构建的版本。我对此是否正确?似乎可能有更好的方法。
...如果自定义安装程序 我需要什么,有人能指点我一个好的教程吗?
答案 0 :(得分:2)
现在我很确定Mac OS X没有安装libcurl,...
是的,确实如此:
curl --version %~(0)
curl 7.19.4 (universal-apple-darwin10.0) libcurl/7.19.4 OpenSSL/0.9.8k zlib/1.2.3
......即使它确实这样做很可能不是用libssh构建的,我也需要它。
正确:没有。
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IPv6 Largefile NTLM SSL libz
您可能会发现将libcurl构建为静态库并将其链接起来比构建共享库并将其复制到应用程序的Frameworks子目录中更简单。
答案 1 :(得分:2)
您可以使用install_name_tool更改动态链接库的搜索路径。
使用@executable_path,您可以使用相对于应用程序可执行文件的路径,然后将库放在框架文件夹(“@executable_path /../ Frameworks / libcurl.dylib”)或可执行文件目录中(例如“@” executable_path / LIB / libcurl.dylib“)。
通过这种方式,您可以构建自己的动态链接库并将其发布到应用程序包中。
答案 2 :(得分:1)
是什么让你确定OS X不附带libcurl?
$ locate libcurl
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libcurl.2.dylib
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libcurl.3.dylib
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libcurl.4.0.0.dylib
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libcurl.4.dylib
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libcurl.dylib
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libcurl.2.dylib
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libcurl.3.dylib
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libcurl.4.dylib
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libcurl.dylib
无论哪种方式,如果你需要自己的,只需把它放在你的捆绑中。
答案 3 :(得分:0)
也许你想在使用libcurl之前查看ConnectionKit。