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 2mac 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. -
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:
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.
-
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 2mac 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.@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.oMy configuration:
./configure -webkit -phonon -arch "x86" -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/ -nomake examples -nomake demosI think CoreWlan framework has deprecated some functions such as :CWKeychainCopyEAPIdentity. But Qt4.8.6 still use them in qcorewlanengine .
-
@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.oMy configuration:
./configure -webkit -phonon -arch "x86" -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/ -nomake examples -nomake demosI 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.