octave 3.2.2 build with libstdc++_s.a by GCC-4.4.0 (MinGW Official)

Tatsuro MATSUOKA tmacchant at yahoo.co.jp
Sat Jul 25 21:30:55 CDT 2009


The first post included mistakes so that please ignore that.

***********
Hello

I have tried to build octave 3.2.2  with libstdc++_s.a by GCC-4.4.0 (MinGW Official) .

With very tricky way, I have got a successful result.

I hacked Makefile in liboctave and src to add -lstdc++_s flag at the end of linker flag.
For octave.exe it went well

g++ -shared-libgcc -D_DLL -DPIC -Ic:/Programs/OctaveBuild/include
-Ic:/Programs/WinDevTools/include
-Ic:/Programs/GnuWin32/include -Ic:/progra~1/Pcre/include -I. -I../../../octave-3.2.2/src -I..
-I../liboctave -I../src -I../libcruft/misc -I../../../octave-3.2.2
-I../../../octave-3.2.2/liboctave
-I../../../octave-3.2.2/src -I../../../octave-3.2.2/libcruft/misc  -DHAVE_CONFIG_H -mieee-fp
-IC:/Programs/WinDevTools/include/freetype2 -IC:/Programs/WinDevTools/include -Wall -W -Wshadow
-Wold-style-cast -Wformat -O3 -fomit-frame-pointer  \
	-L..   -Lc:/Programs/OctaveBuild/lib  -LC:/Programs/WinDevTools/lib -Lc:/Programs/GnuWin32/lib
-o
octave.exe \
	main.o  \
	-L../liboctave -L../libcruft -L../src  \
	-loctinterp -loctave  -lcruft  -lglob \
	 -lumfpack -lamd -lcamd -lcolamd \
	-lcholmod -lccolamd -lcxsparse -Lc:/Programs/OctaveBuild/lib -lblas.dll -llapack.dll \
	-lfftw3 -lfftw3f -lqrupdate -larpack -lftgl -LC:/Programs/WinDevTools/lib -lfreetype -lopengl32
-lglu32 \
	  -lreadline  -ltermcap -liberty -Lc:/Programs/OctaveBuild/lib -lblas.dll -llapack.dll -lhdf5
-lz -lm
-luuid -lgfortran.dll -lgdi32 -lws2_32 -luser32 -lkernel32 -Lc:/Programs/OctaveBuild/lib
-LC:/Programs/WinDevTools/lib -Lc:/Programs/GnuWin32/lib
-Lc:/programs/mingw/bin/../lib/gcc/mingw32/4.4.0 -Lc:/programs/mingw/bin/../lib/gcc
-Lc:/programs/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/lib
-Lc:/programs/mingw/bin/../lib/gcc/mingw32/4.4.0/../../.. -lhdf5 -lz -lm -luuid -lgfortran.dll
-lgfortranbegin -lgfortran -lmingw32 -lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32
-ladvapi32 -lshell32 -lstdc++_s

However, for liboctave.dll, liboptinterp.dll and *.oct file, the above did not goes well,
g++ alway add -lstdc++ and this caused multiple definition error.

So I first build them with without -lstdc++_s and  then eleteted *.dll and oct files.
And 
make -i &> make.log
awk '{if($1=="g\+\+") print $0}' make.log > tmp.text
to get 

g++ -shared-libgcc -shared -Wl,--export-all-symbols -Wl,--enable-auto-import
-Wl,--enable-runtime-pseudo-reloc -o betainc.oct betainc.o -L../libcruft -lcruft -L../liboctave
-loctave -L. -loctinterp -lcholmod -lumfpack -lamd -lcamd -lcolamd -lccolamd -lcxsparse
-Lc:/Programs/OctaveBuild/lib -lblas.dll -llapack.dll -lfftw3 -lfftw3f -lqrupdate -larpack
-lreadline 
-ltermcap -liberty -Lc:/Programs/OctaveBuild/lib -lblas.dll -llapack.dll -lhdf5 -lz -lm -luuid
-lgfortran.dll -lgdi32 -lws2_32 -luser32 -lkernel32 -Lc:/Programs/OctaveBuild/lib
-LC:/Programs/WinDevTools/lib -Lc:/Programs/GnuWin32/lib
-Lc:/programs/mingw/bin/../lib/gcc/mingw32/4.4.0 -Lc:/programs/mingw/bin/../lib/gcc
-Lc:/programs/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/lib
-Lc:/programs/mingw/bin/../lib/gcc/mingw32/4.4.0/../../.. -lhdf5 -lz -lm -luuid -lgfortran.dll
-lgfortranbegin -lgfortran -lmingw32 -lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32
-ladvapi32 -lshell32
  :
  :

I replace all 'g++' by 'gcc' and add  -lstdc++_s -lsupc++ at the last of linker flag by a text editor.

And then I used the modified link commands and built dll files and oct files. 

Size of oct flies were reduced by about 300 kbytes.

Finally I have tested make check.

The result

  c:\usr\Tatsu\mingwhome\octaves\octave-3.2.2\src\data.cc  PASS  506/509  FAIL 3
  test_string.m .......................................... PASS   78/79   FAIL 1

Summary:

  PASS   5736
  FAIL      4

is the same as the following without shared libstdc++

http://www.nabble.com/Re:-Octave-Version-3.2.2-Released-p24652801.html

However my way was too tricky, I think. 

Does anyone tried to build  octave by GCC-4.4.0-MinGW official with shared libstdc++ ?

Regards

Tatsuro
 


--------------------------------------
Power up the Internet with Yahoo! Toolbar.
http://pr.mail.yahoo.co.jp/toolbar/


More information about the Octave-maintainers mailing list