I believe I fixed my problem by changing "-soname" to "- dylib_install_name -Wl" in the following files:
lib/Makefile base/Makefile lac/Makefile deal.II/Makefile I found this as a note on an Apple developer website from 2003: "The -soname is what is biting you, since it's ELF only, therefore non portable. AFAICT, the equivalent on MacOS X is -dylib_install_name, but without an = in there" I don't know what exactly all of this is talking about, but I thought I would pass my experience onwards. Also, I am using custom mpi compilers, openmpi 1.2.7, compiled with the gcc distributed by apple and gfortran from the gnu wiki. Jon On Oct 9, 2008, at 12:13 PM, Jonathan Pitt wrote: > Hello, > > In revision 17150, I get the following linking error on my Intel Mac > running 10.5: > > cd /Users/jpitt/prog/lib/deal/lib && /usr/bin/make external-links > ======================debug============= Linking library: > libpetscall.g.dylib > ld: unknown option: -soname > collect2: ld returned 1 exit status > make[1]: *** [libpetscall.g.dylib] Error 1 > make: *** [deps] Error 2 > > I noticed that the -soname option appears throughout lib/Makefile. If > I backup to revision 17100, everything is fine. Do you think there is > some problem with my configuration? I am using the line: > > /configure CC=mpicc CXX=mpicxx F77=mpif77 FC=mpif90 --with-umfpack -- > with-blas --with-lapack --enable-multithreading --with-multithreading > > I have attached the configuration out put below as well. > > > Best Regards, > > Jon Pitt > > > > [12:05:[EMAIL PROTECTED]:~/prog/lib/deal] ./configure CC=mpicc > CXX=mpicxx F77=mpif77 FC=mpif90 --with-umfpack --with-blas --with- > lapack --enable-multithreading --with-multithreading > Configuring deal.II version 6.2.pre > checking build system type... i386-apple-darwin9.5.0 > checking host system type... i386-apple-darwin9.5.0 > checking target system type... i386-apple-darwin9.5.0 > > ---------------- configuring C/C++ compilers ---------------- > checking for gcc... mpicc > checking for C compiler default output file name... a.out > checking whether the C compiler works... yes > checking whether we are cross compiling... no > checking for suffix of executables... > checking for suffix of object files... o > checking whether we are using the GNU C compiler... yes > checking whether mpicc accepts -g... yes > checking for mpicc option to accept ISO C89... none needed > checking for mpicc... /Users/jpitt/prog/lib/mpi/bin/mpicc > checking whether we are using the GNU C++ compiler... yes > checking whether mpicxx accepts -g... yes > checking for mpicxx... /Users/jpitt/prog/lib/mpi/bin/mpicxx > C++ compiler is gcc4.0 (subversion gcc4.0.1) > checking if the compiler is built for MPI... yes > checking whether qualifiers in return types lead to a warning... no > checking for std::advance warning... no > checking whether we can use -Wno-long-double... yes > checking whether -ggdb works... yes > C compiler is gcc-4.0 > checking whether compiler understands option -Wl,-rpath... yes > checking for platform specific multi-threading defines... not > necessary > checking for only partly bracketed mutex initializer... no > checking for posix thread functions... ok > checking for posix thread mutex functions... ok > checking for posix thread condition variable functions... ok > checking for posix thread barrier functions... not found. barriers > will not be supported > checking whether AssertThrow works with debug flags... yes > checking whether AssertThrow works with optimized flags... yes > checking for local computed template typedef bug... no > checking for partially specialized template access control bug... no > checking for template member operator instantiation bug... no > checking for 1st template friend in namespace bug... no > checking for 2nd template friend in namespace bug... no > checking for template specialization friend bug... no > checking for bug with implementing pure functions... yes. using > workaround > checking for template template typedef bug... no > checking for address of template template function bug... no > checking for nested classes are implicit friends bug... no > checking for nested template class friends bug... yes. using > workaround > checking for member variable specialization bug... no > checking for template member function specialization bug... no > checking for long double optimization bug... no > checking for anonymous namespace and name mangling bug... no > checking for anonymous namespace and weak linkage bug... yes > checking for bogus warning with anonymous namespaces... no > checking for weak linkage bug (Apple gcc3.3) ... no > checking for SFINAE bug... no > checking for template operator disambiguation bug... no > checking for array assignment in conditional bug... no > checking for explicit template constructor bug... no > checking for warning bug with type qualifiers... no > checking for problem with -Wsynth and std::complex... no > checking for __PRETTY_FUNCTION__... yes > checking for std::iterator class... yes > checking for std::i/ostringstream classes... yes > checking for std::numeric_limits classes... yes > checking for <ostream> header... yes > checking for <iosfwd> header... yes > checking for __builtin_expect... yes > checking for __verbose_terminate_handler... yes > checking for glibc-like stacktrace information... yes > checking whether compiler accepts -rdynamic... yes > checking for libstdc++ demangler... yes > checking for minimal std::vector<T> capacity... 1 > checking for minimal std::vector<bool> capacity... 32 > checking for exception specifications on abort()... none > checking whether getrusage is properly declared... yes > checking whether isnan is declared with debug flags... no. > checking whether isnan is declared with optimized flags... no. > checking for std::isfinite... yes > checking for rand_r... no > checking for quad vs. quad_t define... no > checking for definitions of error codes in errno.h... yes > checking for gethostname... yes > checking for getpid... yes > checking how to run the C++ preprocessor... /Users/jpitt/prog/lib/mpi/ > bin/mpicxx -E > checking for grep that handles long lines and -e... /usr/bin/grep > checking for egrep... /usr/bin/grep -E > checking for ANSI C header files... rm: conftest.dSYM: is a directory > rm: conftest.dSYM: is a directory > yes > checking for sys/types.h... yes > checking for sys/stat.h... yes > checking for stdlib.h... yes > checking for string.h... yes > checking for memory.h... yes > checking for strings.h... yes > checking for inttypes.h... yes > checking for stdint.h... yes > checking for unistd.h... yes > checking sys/syscall.h usability... yes > checking sys/syscall.h presence... yes > checking for sys/syscall.h... yes > checking for bad socket functions/FPU interaction... no > checking boost/shared_ptr.hpp usability... yes > checking boost/shared_ptr.hpp presence... yes > checking for boost/shared_ptr.hpp... yes > checking boost/type_traits.hpp usability... yes > checking boost/type_traits.hpp presence... yes > checking for boost/type_traits.hpp... yes > checking boost/tuple/tuple.hpp usability... yes > checking boost/tuple/tuple.hpp presence... yes > checking for boost/tuple/tuple.hpp... yes > checking for boost::shared_ptr assignment operator= template buglet... > no > > ----------------- configuring F77 compilers ----------------- > checking for gfortran... /usr/local/bin/gfortran > F77 compiler is gcc-4.4 > checking for e_wsfe in -lg2c... no > checking for _gfortran_allocate in -lgfortran... no > checking for _gfortran_st_write_done in -lgfortran... no > > -------------- configuring shared/static libs --------------- > checking for ar... ar > checking for ar... /usr/bin/ar > checking for ranlib... ranlib > checking for ranlib... /usr/bin/ranlib > > ---------------- configuring additional libs ---------------- > checking for PETSc library directory... /Users/jpitt/prog/lib/petsc > checking for PETSc version... 2.3.3 > checking for PETSc library architecture... darwin9.5.0-cxx-opt > checking for PETSc libmpiuni library... > checking for Trilinos library directory... /Users/jpitt/prog/lib/ > trilinos > checking whether Trilinos uses shared libraries... yes > checking whether Trilinos uses static libraries... yes > checking -framework Accelerate... yes > checking for HSL subroutines... none found > checking for crc32 in -lz... yes > checking netcdfcpp.h usability... no > checking netcdfcpp.h presence... no > checking for netcdfcpp.h... no > checking for Metis library directory... /Users/jpitt/prog/lib/metis > checking for Metis version... METIS 4.0.1 Mon Nov 30 10:27:29 CST 1998 > checking UmfPack library... using included version > checking for dgbsv_ in -llapack... yes > checking for daxpy_... yes > checking for dgemv_... yes > checking for sgemv_... yes > checking for dgeev_... yes > checking for sgeev_... yes > checking for dgeevx_... yes > checking for sgeevx_... yes > checking for dgesvd_... yes > checking for sgesvd_... yes > checking for dgetrf_... yes > checking for sgetrf_... yes > checking for dgetrs_... yes > checking for sgetrs_... yes > checking for dstev_... yes > checking for sstev_... yes > > ------------------ checking compiler flags ------------------ > checking for CPU to optimize for... none given or not recognized > checking for consistency of CXXFLAGSG flags... yes > checking for consistency of CXXFLAGSO flags... yes > > ---------------- configuring other programs ----------------- > checking for doxygen... no > checking for dot... no > checking for perl... /usr/bin/perl > > --------------------- generating output --------------------- > configure: creating ./config.status > config.status: creating common/Make.global_options > config.status: creating common/Makefile.template > config.status: creating common/scripts/make_dependencies.pl > config.status: creating Version > config.status: creating doc/Makefile > config.status: creating doc/doxygen/Makefile > config.status: creating doc/doxygen/options.dox > config.status: creating doc/doxygen/options.136 > config.status: creating doc/doxygen/header.html > config.status: creating doc/doxygen/header.136 > config.status: creating doc/doxygen/header.tex > config.status: creating common/template-arguments > config.status: creating base/include/base/config.h > === configuring in contrib (/Users/jpitt/prog/lib/deal/contrib) > configure: running /bin/sh ./configure '--prefix=/Users/jpitt/prog/ > lib/ > deal' 'CC=mpicc' 'CXX=mpicxx' 'F77=mpif77' 'FC=mpif90' '--with- > umfpack' '--with-blas' '--with-lapack' '--enable-multithreading' '-- > with-multithreading' --cache-file=/dev/null --srcdir=. > > ---------------- configuring contrib subdir ----------------- > configure: creating ./config.status > config.status: creating Makefile > === configuring in utilities (/Users/jpitt/prog/lib/deal/contrib/ > utilities) > configure: running /bin/sh ./configure '--prefix=/Users/jpitt/prog/ > lib/ > deal' 'CC=mpicc' 'CXX=mpicxx' 'F77=mpif77' 'FC=mpif90' '--with- > umfpack' '--with-blas' '--with-lapack' '--enable-multithreading' '-- > with-multithreading' --cache-file=/dev/null --srcdir=. > configure: creating ./config.status > config.status: creating Makefile > > > ------------------------------------------------------------- > > The deal.II library is now configured. In order to > compile it and to generate the documentation, just > call 'make' without arguments for a list of options. > For more information, see the doc/readme.html file. > > ------------------------------------------------------------- > > Please add the line > export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Users/jpitt/prog/ > lib/deal/lib > to your .bash_profile file so that OSX will be > able to find the deal.II shared libraries when > executing your programs. > WARNING: During configuration, no version of the doxygen > WARNING: documentation generation program could be found. > WARNING: You can still use the library, but you won't be > WARNING: able to generate API documentation locally on > WARNING: your machine. It is available for download, > WARNING: however. > > > _______________________________________________ > _______________________________________________
