qt4.8.6 with os x10.10 compiled error



  • Hi all !
    I had tried to compile qt4.8.6 on mac os x10.10 several days , and tried lots of methods, but can't solve the problem. The err message as below:
    Undefined symbols for architecture i386:
    ".objc_class_name_CWInterface", referenced from:
    pointer-to-literal-objc-class-name in qcorewlanengine.o
    "_CWKeychainCopyEAPIdentity", referenced from:
    QCoreWlanEngine::connectToId(QString const&) in qcorewlanengine.o
    "_CWKeychainCopyEAPUsernameAndPassword", referenced from:
    QCoreWlanEngine::connectToId(QString const&) in qcorewlanengine.o
    "_CWKeychainCopyPassword", referenced from:
    QCoreWlanEngine::connectToId(QString const&) in qcorewlanengine.o
    "_CWPowerDidChangeNotification", referenced from:
    -[QNSListener init] in qcorewlanengine.o
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[4]: *** [../../../../plugins/bearer/libqcorewlanbearer_debug.dylib] Error 1
    make[3]: *** [debug-all] Error 2
    make[2]: *** [sub-corewlan-make_default] Error 2
    make[1]: *** [sub-bearer-make_default] Error 2
    make: *** [sub-plugins-make_default-ordered] Error 2

    mac os x10.10 have remove many functions , but qt4.8.6 also use them .
    How can I deal with this problem?
    remarks: my custom will I compile qt4.8.6 on os x10.10.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Am I see correctly that you are trying to build a 32bit version of Qt ?



  • You need a patch for the CoreWLan (all those _CWSomething) framework to link.

    Either try the latest git for Qt 4.8.7, dig the specific patch from git or check my own instructions for it:

    https://dootaini.wordpress.com/2014/12/11/building-qt-4-8-6-x64-on-os-x-10-10-with-xcode-6-x-so-that-it-works-on-os-x-10-6/

    Note that I wrote that for my own benefit mostly, it's the step-by-step that I know works. It should work the same for a 32 bits build.



  • @SGaist
    when I build a 64bit version of Qt , the same error appears.
    .objc_class_name_CWInterface", referenced from:
    pointer-to-literal-objc-class-name in qcorewlanengine.o
    "_CWKeychainCopyEAPIdentity", referenced from:
    QCoreWlanEngine::connectToId(QString const&) in qcorewlanengine.o
    "_CWKeychainCopyEAPUsernameAndPassword", referenced from:
    QCoreWlanEngine::connectToId(QString const&) in qcorewlanengine.o
    "_CWKeychainCopyPassword", referenced from:
    QCoreWlanEngine::connectToId(QString const&) in qcorewlanengine.o

    My configuration:
    ./configure -webkit -phonon -arch "x86" -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/ -nomake examples -nomake demos

    I think CoreWlan framework has deprecated some functions such as :CWKeychainCopyEAPIdentity. But Qt4.8.6 still use them in qcorewlanengine .



  • @vilas said:

    I think CoreWlan framework has deprecated some functions such as :CWKeychainCopyEAPIdentity. But Qt4.8.6 still use them in qcorewlanengine .

    Maybe they are deprecated but that's not your problem here, deprecated != removed. The problem is that CoreWLan has moved, it use to be under another framework and you were linking with it implicitly. Linking against CoreWLan needs to be explicit now.

    32 bits or 64 bits, you will not succeed until you patch your Qt 4.8.6 source.



  • Thanks,I have patched and compiling now. Wish it will be successful.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.