[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: mxe-build: undefined references
From: |
John D |
Subject: |
RE: mxe-build: undefined references |
Date: |
Sat, 15 Mar 2014 10:50:13 -0400 |
-----Original Message-----
From: Torsten [mailto:address@hidden
Sent: Saturday, March 15, 2014 10:24 AM
To: John D; 'Michael Goffioul'
Cc: 'Octave Maintainers List'
Subject: Re: mxe-build: undefined references
On 15.03.2014 12:40, John D wrote:
>
>
>
>
> *From:*Michael Goffioul [mailto:address@hidden
> *Sent:* Friday, March 14, 2014 8:33 PM
> *To:* John D
> *Cc:* Torsten; Octave Maintainers List
> *Subject:* Re: mxe-build: undefined references
>
>
>
>
>
>
>
> On Fri, Mar 14, 2014 at 4:14 PM, John D <address@hidden
> <mailto:address@hidden>> wrote:
>
>
>
> -----Original Message-----
> From: Torsten [mailto:address@hidden <mailto:address@hidden>]
> Sent: Friday, March 14, 2014 3:23 PM
> To: John D; address@hidden
> <mailto:address@hidden>
> Subject: Re: mxe-build: undefined references
>
> On 14.03.2014 18:14, John D wrote:
>>
>> Message: 5
>> Date: Thu, 13 Mar 2014 18:52:18 +0100
>> From: Torsten <address@hidden <mailto:address@hidden>>
>> To: octave maintainers mailing list <address@hidden
> <mailto:address@hidden>>
>> Subject: mxe-build: undefined references
>> Message-ID: <address@hidden
> <mailto:address@hidden>>
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>> When I try to make an mxe-cross-build of a recent gui-release version
>> of octave I get several undefined reference errors. Here some of them:
>>
>> graphics/.libs/libgui-graphics.a(graphics_libgui_graphics_la-GLCanvas.
>> o): In function `ZN9QtHandles8GLCanvas11drawZoomBoxERK6QPointS3_':
>> /home/ttl/mxe/tmp-octave/octave-3.9.0+/libgui/graphics/GLCanvas.cc:90:
>> undefined reference to address@hidden'
>> /home/ttl/mxe/tmp-octave/octave-3.9.0+/libgui/graphics/GLCanvas.cc:92:
>> undefined reference to address@hidden'
>> /home/ttl/mxe/tmp-octave/octave-3.9.0+/libgui/graphics/GLCanvas.cc:93:
>> undefined reference to address@hidden'
>> /home/ttl/mxe/tmp-octave/octave-3.9.0+/libgui/graphics/GLCanvas.cc:97:
>> undefined reference to address@hidden'
>> /home/ttl/mxe/tmp-octave/octave-3.9.0+/libgui/graphics/GLCanvas.cc:99:
>> undefined reference to address@hidden'
>> /home/ttl/mxe/tmp-octave/octave-3.9.0+/libgui/graphics/GLCanvas.cc:100:
>> undefined reference to address@hidden'
>> /home/ttl/mxe/tmp-octave/octave-3.9.0+/libgui/graphics/GLCanvas.cc:102:
>> undefined reference to address@hidden'
>> /home/ttl/mxe/tmp-octave/octave-3.9.0+/libgui/graphics/GLCanvas.cc:103:
>> undefined reference to address@hidden'
>>
>> Is it in principle possible to compile the integrated QtHandles
>> within the mxe environment?
>>
>> Torsten
>>
>> --
>>
>> Did it link with -lopengl32
>>
>
> No, it did not link to -lopengl32.
> This is the command that produced the errors:
>
> libtool: link: i686-w64-mingw32-g++ -shared -nostdlib
>
/home/ttl/software/octave/mxe/usr/lib/gcc/i686-w64-mingw32/4.8.2/../../.../.
.
> /i686-w64-mingw32/lib/../lib/dllcrt2.o
> /home/ttl/software/octave/mxe/usr/lib/gcc/i686-w64-mingw32/4.8.2/crtbe
> gin.o -Wl,--whole-archive qterminal/.libs/libqterminal.a
> src/.libs/libgui-src.a graphics/.libs/libgui-graphics.a
> -Wl,--no-whole-archive
> -L/home/ttl/software/octave/mxe/tmp-octave/octave-3.9.0+/.build/liboct
> ave/.l
> ibs
> -L/home/ttl/software/octave/mxe/usr/i686-w64-mingw32/lib
> .../libinterp/.libs/liboctinterp.dll.a
> -L/home/ttl/software/octave/mxe/usr/lib/gcc/i686-w64-mingw32/4.8.2
> -L/home/ttl/software/octave/mxe/usr/mingw/lib
> .../liboctave/.libs/liboctave.dll.a -lQtNetwork4 -lQtOpenGL4 -lQtGui4
> -lQtCore4 -lqscintilla2 -luser32 -lkernel32 -lgdi32 -lws2_32 -luser32
> -lkernel32
> -L/home/ttl/software/octave/mxe/usr/lib/gcc/i686-w64-mingw32/4.8.2/../
> .../../
> ../i686-w64-mingw32/lib/../lib
> -L/home/ttl/software/octave/mxe/usr/lib/gcc/i686-w64-mingw32/4.8.2/../
> .../../
> ../i686-w64-mingw32/lib
> /home/ttl/software/octave/mxe/usr/lib/gcc/i686-w64-mingw32/4.8.2/libst
> dc++.d
> ll.a
> -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lpthread
> -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc
> -lmoldname -lmingwex -lmsvcrt
> /home/ttl/software/octave/mxe/usr/lib/gcc/i686-w64-mingw32/4.8.2/crten
> d..o -mieee-fp -O2 -pthread -Wl,-rpath-link
> -Wl,/home/ttl/software/octave/mxe/usr/i686-w64-mingw32/lib
> -Wl,--export-all-symbols -pthread -o .libs/liboctgui-0.dll
> -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker
> ..libs/liboctgui.dll.a
>
> Torsten
>
> --
>
> I ahvent tried compiling it mysekf yet, but would think that it would
> need to link to the opengl32 library to resolve the opengl calls.
>
>
>
> Dynamic linking is different in Win32 than in Linux. You only need to
> link against the libraries your code is really using. You don't need
> to link against the deps of a DLL if your own code doesn't make any
> calls from those deps. The calls that the DLL makes into those deps
> have already been resolved when the DLL was linked. This different
> behavior has several consequences:
>
> - you cannot have undefined references at link time; something that is
> allowed under Linux
>
> - you cannot override (at least it's far from trivial) symbols from a
> DLL, such that it's used by all other DLL that links to your code and
> to that DLL; typical example in octave is override XERBLA from the
> BLAS DLL, by using octave's version: this doesn't work in Win32
>
>
>
> Looking at the package config file for QtOpenGL, it specifies
> opengl32 as
> part of libs.private
>
>
>
> Technically it's correct. The opengl32 is a private library that is
> only needed when you want to link QtOpenGL itself (that's the meaning
> of libs.private). If your code only uses symbols from QtOpenGL and do
> not make any OpenGL call, you don't need to link against opengl32.
> Obviously, your code would be useless, but still link-able in Win32.
>
>
>
> Michael.
>
>
>
>
>
>
>
> I haven't tried running it yet, but I built ok using gui-release
> changeset 18557:ca1648b2e673 on my mxe build.
>
>
>
> At the line where it is complaining about undefines mine is:
>
>
>
> libtool: link: i686-w64-mingw32-g++ -shared -nostdlib
> /home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2/../../../../i
> 686-w64-mingw32/lib/../lib/dllcrt2.o
> /home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2/crtbegin.o
> -Wl,--whole-archive qterminal/.libs/libqterminal.a
> src/.libs/libgui-src.a graphics/.libs/libgui-graphics.a
> -Wl,--no-whole-archive
> -L/home/jade/mxe-octave/tmp-octave/octave-3.9.0+/.build/liboctave/.lib
> s -L/home/jade/mxe-octave/usr/i686-w64-mingw32/lib
> ../libinterp/.libs/liboctinterp.dll.a
> -L/home/jade/mxe-octave/usr/mingw/lib
> -L/home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2
> /home/jade/mxe-octave/tmp-octave/octave-3.9.0+/.build/liboctave/.libs/
> liboctave.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libhdf5.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libfontconfig.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libexpat.dll.a
> -lfreetype
> -lopengl32 -lglu32 -lgl2ps ../liboctave/.libs/liboctave.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libcurl.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libidn.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libintl.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libssh2.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libgcrypt.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libgpg-error.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libgnutls.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libiconv.dll.a -lnettle
> -lhogweed /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libgmp.dll.a
> -lcrypt32
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libpcreposix.dll.a
> -lwldap32 -lz -lcholmod -lumfpack -lamd -lcamd -lcolamd -lccolamd
> -lcxsparse -larpack
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libqrupdate.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libfftw3.dll.a
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libfftw3f.dll.a
> -llapack -lblas -lreadline -ltermcap
> /home/jade/mxe-octave/usr/i686-w64-mingw32/lib/libpcre.dll.a
> /home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2/libgfortran.d
> ll.a
> /home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2/libquadmath.d
> ll.a
> -lQtNetwork4 -lQtOpenGL4 -lQtGui4 -lQtCore4 -lqscintilla2 -luser32
> -lkernel32 -lgdi32 -lws2_32 -luser32 -lkernel32
> -L/home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2/../../../..
> /i686-w64-mingw32/lib/../lib
> -L/home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2/../../../..
> /i686-w64-mingw32/lib
> /home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2/libstdc++.dll
> .a
> -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lpthread
> -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc
> -lmoldname -lmingwex -lmsvcrt
> /home/jade/mxe-octave/usr/lib/gcc/i686-w64-mingw32/4.8.2/crtend.o
> -mieee-fp -O2 -pthread -Wl,-rpath-link
> -Wl,/home/jade/mxe-octave/usr/i686-w64-mingw32/lib
> -Wl,--export-all-symbols -pthread -o .libs/liboctgui-0.dll
> -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker
> .libs/liboctgui.dll.a
>
Obviously your build is linking against much mor libs inlcuding opengl32.
After "make dist" of the gui-release branch I have copied the archive
octave-3.9.0+.tar.gz into mxe/pkg/ and updated mk/octave.mk (version and
checksum). Configure was called with --disable-jit. Am I missing something?
Torsten
--
That's the same as I did for my update.
Changes to octave.mk:
diff -r e04d9375cd5f src/octave.mk
--- a/src/octave.mk Mon Mar 10 17:17:32 2014 -0400
+++ b/src/octave.mk Sat Mar 15 10:47:38 2014 -0400
@@ -3,8 +3,8 @@
PKG := octave
$(PKG)_IGNORE :=
-$(PKG)_VERSION := 3.8.0
-$(PKG)_CHECKSUM := 7dc2736d05fef50e4f7b3e1b9ab83c8287e8f267
+$(PKG)_VERSION := 3.9.0+
+$(PKG)_CHECKSUM := 9c18d23625b45c373f55808fb24315a4ff531ad8
$(PKG)_SUBDIR := $(PKG)-$($(PKG)_VERSION)
$(PKG)_FILE := octave-$($(PKG)_VERSION).tar.gz
$(PKG)_URL := ftp://ftp.gnu.org/gnu/octave/$($(PKG)_FILE)
I had ran configure without options previously to build everything including
stable-octave
Lastly 'make octave'
- mxe-build: undefined references, Torsten, 2014/03/13
- RE: mxe-build: undefined references, John D, 2014/03/14
- Re: mxe-build: undefined references, Torsten, 2014/03/14
- RE: mxe-build: undefined references, John D, 2014/03/14
- Re: mxe-build: undefined references, Michael Goffioul, 2014/03/14
- RE: mxe-build: undefined references, John D, 2014/03/15
- Re: mxe-build: undefined references, Torsten, 2014/03/15
- RE: mxe-build: undefined references,
John D <=
- Re: mxe-build: undefined references, Torsten, 2014/03/16
- RE: mxe-build: undefined references, John D, 2014/03/16
- Re: mxe-build: undefined references, Torsten, 2014/03/16
- RE: mxe-build: undefined references, John D, 2014/03/16
- Re: mxe-build: undefined references, Torsten, 2014/03/21
- RE: mxe-build: undefined references, John D, 2014/03/21
- Message not available
- Message not available
- Re: mxe-build: undefined references, Torsten, 2014/03/27
- RE: mxe-build: undefined references, John D, 2014/03/27
- Re: mxe-build: undefined references, Torsten, 2014/03/27
- Re: mxe-build: undefined references, Torsten, 2014/03/27