issues building MF
Status: Alpha
Brought to you by:
mhender
Hi,
First, I use the link https://sourceforge.net/projects/multifario/files/latest/download and got v0.9k not v1.0, not sure if this is supposed to be this way (https://multifario.sourceforge.io report v1.0.0).
The bootstrap looks ok (to me...)
[coucou]$ ./bootstrap
+ libtoolize --force
libtoolize: putting auxiliary files in '.'.
libtoolize: linking file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: linking file 'm4/libtool.m4'
libtoolize: linking file 'm4/ltoptions.m4'
libtoolize: linking file 'm4/ltsugar.m4'
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
+ aclocal -I m4
+ autoheader
+ automake --foreign --add-missing --copy
configure.ac:21: installing './compile'
configure.ac:22: installing './missing'
objs/Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
+ autoconf
The configure seems also fine, it ends with
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating objs/Makefile
config.status: creating include/multifarioConfig.h
config.status: executing libtool commands
config.status: executing depfiles commands
but then:
[coucou]$ make
Making all in objs
make[1]: Entering directory '/home/rveltz/prog/multifario-v0.9k/objs'
depbase=`echo ../Examples/AUTBVP.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I../include -g -O -I../include -DNOMFSIMPLEX -DMFALLOWVERBOSE -DMANIFOLD -DHAVE_AUTO -g -O2 -MT ../Examples/AUTBVP.o -MD -MP -MF $depbase.Tpo -c -o ../Examples/AUTBVP.o ../Examples/AUTBVP.c &&\
mv -f $depbase.Tpo $depbase.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O -I../include -DNOMFSIMPLEX -DMFALLOWVERBOSE -DMANIFOLD -DHAVE_AUTO -g -O2 -L../lib -o ../bin/AUTBVP ../Examples/AUTBVP.o -lMF -lExpCmp -lauto2000 -lautof2c -lSH -ltiff -L/usr/lib/gcc/x86_64-redhat-linux/11 -L/usr/lib/gcc/x86_64-redhat-linux/11/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/11/../../.. -lgfortran -lm -lquadmath -lm -ltiff
libtool: link: gcc -g -O -I../include -DNOMFSIMPLEX -DMFALLOWVERBOSE -DMANIFOLD -DHAVE_AUTO -g -O2 -o ../bin/AUTBVP ../Examples/AUTBVP.o -L../lib -lMF -lExpCmp -lauto2000 -lautof2c -lSH -L/usr/lib/gcc/x86_64-redhat-linux/11 -L/usr/lib/gcc/x86_64-redhat-linux/11/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/11/../../.. -lgfortran -lquadmath -lm -ltiff
/usr/bin/ld: cannot find -lMF
/usr/bin/ld: cannot find -lExpCmp
/usr/bin/ld: cannot find -lauto2000
/usr/bin/ld: cannot find -lautof2c
/usr/bin/ld: cannot find -lSH
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:2181: ../bin/AUTBVP] Error 1
make[1]: Leaving directory '/home/rveltz/prog/multifario-v0.9k/objs'
make: *** [Makefile:554: all-recursive] Error 1
Am I doing something wrong?
Thank you for your help,
Bests
I've been timid about actually moving to v1.0. So yeah, v0.9[a-z] is where it's at.
I don't see anything wrong, although there doesn't seem like near enough output from the make.
Is there anything in the /home/rveltz/prog/multifario-v0.9k/lib directory?
Mike
No the lib folder is empty. I dont know why it starts with AUTBVP.O knowing that the lib MF has ont been built. I add the makefiles in case it helps. If you need another file to help me, do ont hesitate to ask.
Thank you
Last edit: romain Veltz 2022-09-15
Can you do:
make clean
make > make.out 2> make.err
and send make.out and make.err please?
Thanks,
I forgot to say that I did
PATH="/usr/local/opt/libtool/libexec/gnubin:$PATH"to have libtool before callingbootstrapand that I am on osxHi,
Did it help you to have these files?
I'm sorry. I didn't see them until just now.
I don't understand what's going on. It should compile a lot of files, not just Examples/AUTBVP.c Somehow it thinks it has already built the libraries and has tried to go right to the examples. I don't see any errors in any of the output you've sent. It's just skipping the build of the library. You did a "make clean", right?
The only thing I can suggest is to start from scratch with a new directory. I just downloaded the tgz file and built it on my laptop and it built without problem.
osx is a real pain :(
I did make clean etc. The first issue is with libtools, I install it with homebrew and then I do
PATH="/usr/local/opt/libtool/libexec/gnubin:$PATH"which alllows me to runwhich gives
and then
rveltz$ ./configurewhich seems to end finebut then same mistake with
make. If you know somebody who built it on osx, I am interested.osx is a real pain :(
I did make clean etc. The first issue is with libtools, I install it with homebrew and then I do
PATH="/usr/local/opt/libtool/libexec/gnubin:$PATH"which alllows me to runwhich gives
and then
rveltz$ ./configurewhich seems to end finebut then same mistake with
make. If you know somebody who built it on osx, I am interested.OK. I tried running automake again, and it complained about a version mismatch. Ran aclocal like it suggested and then automake. Now I'm getting the same issue you have.
So something in automake seems to have been "improved" and broken the scripts.
Now that I'm getting the same error I can hopefully fix it.
In objs/Makefile.am I define the ld flags that the binaries need. I used
LDADD = -lMF -lExpCmp -lauto2000 -lautof2c -lSH $(TIFF_LIBRARY) $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) -lmand it should be
LDADD = ../lib/libMF.a ../lib/libExpCmp.a ../lib/libauto2000.a ../lib/libautof2c.a ../lib/libSH.a $(TIFF_LIBRARY) $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) -lmSomehow not using the "../lib/" allowed automake to think it didn't have to build those libraries. I guess I can see that.
Can you make that change and see if it solves your problem? I think it will pick up the change, but you may have to run "automake" in the top level directory.
It sure helped, thank you. It stops on this now
Ugh. I thought I'd got all those (they're warnings on my system).
I will fix this and if I can remember how to create a new release I'll release the fix.
In the meantime, replacing "return;" with "return (MFChart)NULL;" will get rid of the error.
Thank you! I am getting this one now
../src/MFAtlas.c:1853:3: error: implicit declaration of function 'MFChartSetPositionInAtlas' is invalid in C99 [-Werror,-Wimplicit-function-declaration] MFChartSetPositionInAtlas(chart,A->nCharts,e);add
to include/MFAtlas.h after the line declaring MFAtlasReduceChartRadius
You seem to ave something like the -Wall compiler flag on, or the OSX is really picky. These are warnings on my system. I've been (slowly) working my way through them.
Last edit: Michael E. Henderson 2022-09-23
this seems to work
make 'CFLAGS=-Wno-return-type -Wno-error=implicit-function-declaration'
Thanks a lot
I tried ./configure --enable-shared but I cant get a libMF.so, do you have hint for this noob question?
(I am trying to make a wrapper to Julia programming language)
All the objects are in the src directory (don't ask -- I have issues with automake).
According to google you should be able to do something like
gcc -shared -o lib/libMFShared.so src/*.o
Last edit: Michael E. Henderson 2022-09-24
I admit I must be a bit stiff, but your suggestion fails for me
OK. Lets try this replacement for Makefile.am --
I moved the stuff from lib/Makefile.am into it, and added
That should create the shared libraries in lib/.libs (libtool does it this way :shrug)
Looks like it worked, thanks a lot
Actually, when trying to call it from Julia, I am not sure it worked
the make ended with:
Last edit: romain Veltz 2022-09-26
I can't tell what's going on. It looks likes an automake/libtool configuration problem, since it isn't passing the names of the obj files to ar, but it's in the creation of the static library, and that was working, wasn't it?
I'm traveling, and won't be back until next Mon., but when I do I can try to find an OSX machine and see if I can reproduce this. My Ubuntu laptop doesn't do this.
Whew. I finally got my Mac set up. Haven't used it in a while and everything was out of date. 8-)}
Anyway, I figure out how to get libtool configured correctly. I also took the opportunity to fix all the things -Wall complains about (mostly printing long int with %d, but some non-trivial things).
I still have a couple of things I'd like to clean up before actually making a new release, but in the meantime can you give this a try?
Thanks!
Thank you,
It looks like I could compile it. Testing the dylib now...
Related
Bugs: #4