Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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
C OSX Yosemite上的libsasl2是否已损坏?缺少sasl_客户_完成_C_Macos_Osx Yosemite_Sasl - Fatal编程技术网

C OSX Yosemite上的libsasl2是否已损坏?缺少sasl_客户_完成

C OSX Yosemite上的libsasl2是否已损坏?缺少sasl_客户_完成,c,macos,osx-yosemite,sasl,C,Macos,Osx Yosemite,Sasl,我在安装libsasl2(cyrussasl)时遇到了一些问题 特别是,本地头和sasl_版本似乎报告了版本2.1.26,但没有为全局函数sasl_client_done提供任何符号 我很确定我应该有这个符号,因为: 它在提供的sasl/sasl.h标题中 cyrsus sasl新闻文件将“已实现的sasl_客户端_完成()/sasl_服务器_完成()”列为2.1.24的功能 在约塞米蒂以外的任何地方都能提供2.1.26 复制品: 请注意,下面的示例打印 impl:'Cyrus SASL

我在安装libsasl2(cyrussasl)时遇到了一些问题

特别是,本地头和sasl_版本似乎报告了版本2.1.26,但没有为全局函数sasl_client_done提供任何符号

我很确定我应该有这个符号,因为:

  • 它在提供的sasl/sasl.h标题中
  • cyrsus sasl新闻文件将“已实现的sasl_客户端_完成()/sasl_服务器_完成()”列为2.1.24的功能
  • 在约塞米蒂以外的任何地方都能提供2.1.26
复制品:

  • 请注意,下面的示例打印
    • impl:'Cyrus SASL',版本:33619994,大调:2,小调:1,步骤:26
  • 在取消注释代码后,该示例使用相同的库版本编译并在linux安装上执行
未注释的代码在yosemite上生成链接错误

Undefined symbols for architecture x86_64:
  "_sasl_client_done", referenced from:
      _main in foo-072675.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
使用以下命令调用编译器:

clang -Wall -Werror -lsasl2 -o foo foo.c -v
伴随着叮当声-v:

Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
Thread model: posix
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.10.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name foo.c -mrelocation-model pic -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 241.9 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -Wall -Werror -fdebug-compilation-dir /Users/jcarey/work -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.10.0 -fencode-extended-block-signature -fdiagnostics-show-option -vectorize-slp -o /var/folders/wq/jypwqgv976n0db5l5qxw900r0000gq/T/foo-92054e.o -x c foo.c
clang -cc1 version 6.0 based upon LLVM 3.5svn default target x86_64-apple-darwin14.0.0
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks (framework directory)
End of search list.
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.10.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -o foo -lsasl2 /var/folders/wq/jypwqgv976n0db5l5qxw900r0000gq/T/foo-92054e.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
  "_sasl_client_done", referenced from:
      _main in foo-92054e.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Apple LLVM 6.0版(clang-600.0.54)(基于LLVM 3.5svn)
目标:x86_64-apple-darwin14.0.0
线程模型:posix
“/Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolschain/usr/bin/clang”-cc1-triple x86_64-apple-macosx10.10.0-emit obj-mrelax all-disable free-disable llvm verifier-main file name foo.c-mrelocation model pic-pic level 2-mdisable fp elim-masm verbose-munwind tables-target cpu core2-target linker version 241.9-v-resource dir/Applications/Xcode.app/Contents/Developer/toolschains/Xcode default.xtoolschain/usr/bin//lib/clang/6.0-isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk-Wall-Werror-fdebug编译目录/Users/jcarey/work-ferror限制19-fmessage长度0-stackprotector 1-mstackreallign-fblock-fobjc runtime=macosx-10.10.0-fencode扩展块签名-FDDiagnostics show选项-矢量化slp-o/var/folders/wq/jypwqgv976n0db5l5qxw900r0000gq/T/foo-92054e.o-x c foo.c
clang-cc1 6.0版基于LLVM 3.5svn默认目标x86_64-apple-darwin14.0.0
忽略不存在的目录“/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/local/include”
忽略不存在的目录“/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/Library/Frameworks”
#包括“…”搜索从这里开始:
#包括搜索从这里开始:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/./lib/clang/6.0/include
/Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolschain/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks(框架目录)
搜索列表结束。
“/Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolschain/usr/bin/ld”-demangle-dynamic-arch x86_64-macosx_version_min 10.10.0-syslibroot/Applications/Xcode.app/Contents/Developer/Platforms/macosx.platform/Developer/SDKs/MacOSX10.10.sdk-o foo-lsasl2/var/folders/wq/jypwqgv976n0db5l5qxw900r0000gq/T/foo-92054e.o-lSystem/Applications/Xcode.app/Contents/Developer/toolschains/XcodeDefault.xctoolchain/usr/bin/./lib/clang/6.0/lib/darwin/libclang\u rt.osx.a
架构x86_64的未定义符号:
“_sasl_client_done”,引用自:
_foo-92054e.o中的主管道
ld:找不到架构x86_64的符号
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)
以及有关守则:

#include <sasl/sasl.h>
#include <stdio.h>
#include <stdint.h>

int main(int argc, char ** argv) {
    const char *impl;
    int version;
    uint32_t buf;
    uint16_t major;
    uint8_t minor;
    uint8_t step;

    sasl_version(&impl, &version);

    buf = version;

    major = buf >> 24;
    minor = (buf << 8) >> 24;
    step = (buf << 24) >> 24;

    printf("impl: '%s', version: %d, major: %d, minor: %d, step: %d\n", impl, version, major, minor, step);

    /*
    {
        int (* scd)(void);

        scd = &sasl_client_done;

        printf("sasl_client_done: %p\n", scd);
    }
    */

    return 0;
}
#包括
#包括
#包括
int main(int argc,字符**argv){
常量字符*impl;
int版本;
uint32_t buf;
大学英语专业;
未成年人;
uint8_t步骤;
sasl_版本(&impl,&version);
buf=版本;
少校=buf>>24;
次要=(buf>24;
步骤=(buf>24;
printf(“impl:'%s',版本:%d,主要:%d,次要:%d,步骤:%d\n”,impl,版本,主要,次要,步骤);
/*
{
int(*scd)(无效);
scd=&sasl\u客户端\u完成;
printf(“sasl\u客户端完成:%p\n”,scd);
}
*/
返回0;
}

我觉得塞勒斯·萨索尔(cyrus sasl)为约塞米蒂(Yosemite)打包的方式有点不对劲(也许使用了小牛队的符号列表?)。

我感兴趣的是,我刚刚检查了10.10.4,我看到符号现在在那里:

$ nm /usr/lib/libsasl2.dylib |grep sasl_client_done 000000000000724a T _sasl_client_done $nm/usr/lib/libsasl2.dylib | grep sasl_client_done 000000000000724a T_sasl_客户_完成 示例代码现在运行良好(注释部分现在未注释)。仍然返回相同的Cyrus SASL版本,但:

impl: 'Cyrus SASL', version: 33619994, major: 2, minor: 1, step: 26 sasl_client_done: 0x7fff8e3dc24a impl:“赛勒斯·萨斯勒”,版本:33619994,大调:2,小调:1,步骤:26 sasl_客户端_完成:0x7fff8e3dc24a
您正在寻找的实用程序是nm。运行
nm/usr/lib/libsasl2.dylib
查看所有符号。您会发现它确实没有在Yosemite中完成
sasl\u client\u
。该库名为
libsasl2.2*
,但显然这并不意味着它在OS x上没有真正的
2.1.x
版本不同iliar与nm进行了比较,但认为无法从同一链接链中链接到报告的2.1.26的major.minor.step sasl_version()更有用。在这个世界上,头与附带的动态库(sasl_version)不匹配(