octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave 6.0.90 build failure on macOS 10.13 against Qt 5.15.1: link e


From: Markus Mützel
Subject: Re: Octave 6.0.90 build failure on macOS 10.13 against Qt 5.15.1: link error on missing Qt symbols
Date: Wed, 16 Sep 2020 15:00:35 +0200

Am 16. September 2020 um 14:39 Uhr schrieb "Andrew Janke":
> Hi folks,
> 
> I tried building the Octave 6.0.90 release candidate on macOS 10.13
> against the new Qt 5.15.1 LTS release, and it's failing at the link
> stage with this error:
> 
> libtool: link: clang++ -std=gnu++11 -dynamiclib  -o
> libgui/.libs/liboctgui.6.dylib 
> libgui/.libs/liboctgui_la-liboctgui-build-info.o  
> -Wl,-force_load,libgui/qterminal/.libs/libqterminal.a
> -Wl,-force_load,libgui/graphics/.libs/libgraphics.a
> -Wl,-force_load,libgui/src/.libs/libgui-src.a 
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/opt/hdf5/lib
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/graphicsmagick/1.3.35/lib
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/fftw/3.3.8_2/lib
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/arpack/3.7.0_5/libexec/lib
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/pcre/8.44/lib
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/opt/qscintilla2-octave-app/lib
> libinterp/.libs/liboctinterp.dylib
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/opt/openblas/lib
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin17/10.2.0
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/gcc/10.2.0/lib/gcc/10/gcc/x86_64-apple-darwin17/10.2.0/../../..
> -L/Applications/Octave-6.0.90.app/Contents/Resources/usr/opt/freetype/lib
> /private/tmp/octave-octave-app@6.0.90-20200916-31442-1145r1k/octave-6.0.90/liboctave/.libs/liboctave.dylib
> liboctave/.libs/liboctave.dylib -framework QtNetwork -framework
> QtPrintSupport -framework QtHelp -framework QtWidgets -framework QtGui
> -framework QtSql -framework QtXml -framework QtCore -lqscintilla2_qt5
> -framework QtOpenGL -lhdf5
> /Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/graphicsmagick/1.3.35/lib/libGraphicsMagick++.dylib
> /Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/graphicsmagick/1.3.35/lib/libGraphicsMagick.dylib
> -llcms2 -lbz2 -lltdl -lpthread -lz -framework OpenGL -lfontconfig
> -lfreetype -framework Carbon -lgl2ps -lcurl -lcholmod -lumfpack -lamd
> -lcamd -lcolamd -lccolamd -lcxsparse -lsuitesparseconfig
> /Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/arpack/3.7.0_5/libexec/lib/libarpack.dylib
> -lqrupdate -lfftw3_threads -lfftw3 -lfftw3f_threads -lfftw3f -lopenblas
> -lreadline -lncurses -lpcre -ldl -lgfortran -lquadmath -liconv -lm 
> -pthread
> -F/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/qt-octave-app/5.15.1/lib
> -F/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/qt-octave-app/5.15.1/lib
> -F/Applications/Octave-6.0.90.app/Contents/Resources/usr/opt/qt-octave-app/lib
> -Wl,-framework -Wl,CoreFoundation -Wl,-dylib_file
> -Wl,/Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/octave-octave-app@6.0.90/6.0.90/lib/octave/6.0.90/liboctave.8.dylib:/private/tmp/octave-octave-app@6.0.90-20200916-31442-1145r1k/octave-6.0.90/liboctave/.libs/liboctave.dylib
>   
> -pthread -framework OpenGL -framework Carbon -framework QtNetwork
> -framework QtPrintSupport -framework QtHelp -framework QtWidgets
> -framework QtGui -framework QtSql -framework QtXml -framework QtCore
> -framework QtOpenGL -install_name 
> /Applications/Octave-6.0.90.app/Contents/Resources/usr/Cellar/octave-octave-app@6.0.90/6.0.90/lib/octave/6.0.90/liboctgui.6.dylib
> -compatibility_version 7 -current_version 7.0 -Wl,-single_module
> Undefined symbols for architecture x86_64:
>   "_class_getClassMethod", referenced from:
>       octave::base_qobject::base_qobject(octave::qt_application&) in
> libgui-src.a(libgui_src_la-octave-qobject.o)
>   "_class_getInstanceMethod", referenced from:
>       octave::base_qobject::base_qobject(octave::qt_application&) in
> libgui-src.a(libgui_src_la-octave-qobject.o)
>   "_objc_getClass", referenced from:
>       octave::base_qobject::base_qobject(octave::qt_application&) in
> libgui-src.a(libgui_src_la-octave-qobject.o)
>   "_objc_msgSend", referenced from:
>       octave::base_qobject::base_qobject(octave::qt_application&) in
> libgui-src.a(libgui_src_la-octave-qobject.o)
>   "_sel_getUid", referenced from:
>       octave::base_qobject::base_qobject(octave::qt_application&) in
> libgui-src.a(libgui_src_la-octave-qobject.o)
> ld: symbol(s) not found for architecture x86_64
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
> make[2]: *** [libgui/liboctgui.la] Error 1
> make[1]: *** [all-recursive] Error 1
> make: *** [all] Error 2
> 
> 
> Anyone know what might be going on there?
> 
> Build went fine against Qt 5.12 on macOS 10.14. I'm trying other
> combinations of OS and Qt version to try to narrow the issue down, but
> these builds do take a while...
> 
> Cheers,
> Andrew
> 

Not sure what is causing this and how this can relate to the Qt version.
But the error seems to come from some MacOS specific code:
https://hg.savannah.gnu.org/hgweb/octave/file/9cd608134ec5/libgui/src/octave-qobject.cc#l81

"class_getClassMethod" and the other functions are from a Mac API.
E.g.: 
https://developer.apple.com/documentation/objectivec/1418887-class_getclassmethod

I don't know how calling those Objective C functions from C++ is supposed to 
work. But IIUC, the same code worked correctly in the past...

Maybe a missing system library in the linker flags?

Markus




reply via email to

[Prev in Thread] Current Thread [Next in Thread]