Jonathan Callahan
2013-Jul-24 19:35 UTC
[Rd] package compilation on OSX 10.8 -- error compiling Fortran library for architecture i386
I am developing a package for analysis of seismic data that relies on a Fortran library. Package compilation works fine on Ubuntu and Red Hat Enterprise but fails for R 2.15.3 on Mac OSX 10.8.4. I've included the entire dump below but the relevant error message seems to be: ld: warning: ignoring file libmseed/libmseed.a, file was built for archive> which is not the architecture being linked (i386): libmseed/libmseed.aCompilation for x86_64 proceeds without a hitch. If anyone is curious, the package tarballs are available at: http://mazamascience.com/Downloads/ Thanks for any helpful suggestions about compiling Fortran on OSX. Jon $ R CMD INSTALL seismic_0.2.1.0.tar.gz * installing to library ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library’ * installing *source* package ‘seismic’ ... ** libs *** arch - i386 gcc -arch i386 -std=gnu99 -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include/i386 -DNDEBUG -Ilibmseed -I/usr/local/include -fPIC -fPIC -g -O2 -c parseMiniSEED.c -o parseMiniSEED.o gcc -O2 -Wall -fPIC -c -o fileutils.o fileutils.c gcc -O2 -Wall -fPIC -c -o genutils.o genutils.c gcc -O2 -Wall -fPIC -c -o gswap.o gswap.c gcc -O2 -Wall -fPIC -c -o lmplatform.o lmplatform.c gcc -O2 -Wall -fPIC -c -o lookup.o lookup.c gcc -O2 -Wall -fPIC -c -o msrutils.o msrutils.c gcc -O2 -Wall -fPIC -c -o pack.o pack.c gcc -O2 -Wall -fPIC -c -o packdata.o packdata.c gcc -O2 -Wall -fPIC -c -o traceutils.o traceutils.c gcc -O2 -Wall -fPIC -c -o tracelist.o tracelist.c gcc -O2 -Wall -fPIC -c -o parseutils.o parseutils.c gcc -O2 -Wall -fPIC -c -o unpack.o unpack.c gcc -O2 -Wall -fPIC -c -o unpackdata.o unpackdata.c gcc -O2 -Wall -fPIC -c -o selection.o selection.c gcc -O2 -Wall -fPIC -c -o logging.o logging.c rm -f libmseed.a ar -csq libmseed.a fileutils.o genutils.o gswap.o lmplatform.o lookup.o msrutils.o pack.o packdata.o traceutils.o tracelist.o parseutils.o unpack.o unpackdata.o selection.o logging.o gcc -arch i386 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -o seismic.so parseMiniSEED.o -Llibmseed -lmseed -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation ld: warning: ignoring file libmseed/libmseed.a, file was built for archive which is not the architecture being linked (i386): libmseed/libmseed.a installing to /Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386 *** arch - x86_64 gcc -arch x86_64 -std=gnu99 -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include/x86_64 -DNDEBUG -Ilibmseed -I/usr/local/include -fPIC -fPIC -g -O2 -c parseMiniSEED.c -o parseMiniSEED.o gcc -O2 -Wall -fPIC -c -o fileutils.o fileutils.c gcc -O2 -Wall -fPIC -c -o genutils.o genutils.c gcc -O2 -Wall -fPIC -c -o gswap.o gswap.c gcc -O2 -Wall -fPIC -c -o lmplatform.o lmplatform.c gcc -O2 -Wall -fPIC -c -o lookup.o lookup.c gcc -O2 -Wall -fPIC -c -o msrutils.o msrutils.c gcc -O2 -Wall -fPIC -c -o pack.o pack.c gcc -O2 -Wall -fPIC -c -o packdata.o packdata.c gcc -O2 -Wall -fPIC -c -o traceutils.o traceutils.c gcc -O2 -Wall -fPIC -c -o tracelist.o tracelist.c gcc -O2 -Wall -fPIC -c -o parseutils.o parseutils.c gcc -O2 -Wall -fPIC -c -o unpack.o unpack.c gcc -O2 -Wall -fPIC -c -o unpackdata.o unpackdata.c gcc -O2 -Wall -fPIC -c -o selection.o selection.c gcc -O2 -Wall -fPIC -c -o logging.o logging.c rm -f libmseed.a ar -csq libmseed.a fileutils.o genutils.o gswap.o lmplatform.o lookup.o msrutils.o pack.o packdata.o traceutils.o tracelist.o parseutils.o unpack.o unpackdata.o selection.o logging.o gcc -arch x86_64 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -o seismic.so parseMiniSEED.o -Llibmseed -lmseed -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation installing to /Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/x86_64 ** R ** inst ** preparing package for lazy loading Creating a generic function for ‘as.vector’ from package ‘base’ in package ‘seismic’ Creating a generic function for ‘mean’ from package ‘base’ in package ‘seismic’ Creating a generic function for ‘median’ from package ‘stats’ in package ‘seismic’ Creating a generic function for ‘sd’ from package ‘stats’ in package ‘seismic’ Creating a generic function for ‘plot’ from package ‘graphics’ in package ‘seismic’ ** help *** installing help indices ** building package indices ** installing vignettes ‘seismic-intro.Rnw’ ** testing if installed package can be loaded *** arch - i386 Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386/seismic.so': dlopen(/Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386/seismic.so, 6): Symbol not found: _ms_loginit Referenced from: /Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386/seismic.so Expected in: flat namespace in /Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386/seismic.so Error: loading failed Execution halted *** arch - x86_64 ERROR: loading failed for ‘i386’ * removing ‘/Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic’ -- Jonathan Callahan, PhD Mazama Science 206-708-5028 mazamascience.com [[alternative HTML version deleted]]
Simon Urbanek
2013-Jul-25 12:37 UTC
[Rd] package compilation on OSX 10.8 -- error compiling Fortran library for architecture i386
On Jul 24, 2013, at 3:35 PM, Jonathan Callahan wrote:> I am developing a package for analysis of seismic data that relies on a > Fortran library. > > Package compilation works fine on Ubuntu and Red Hat Enterprise but fails > for R 2.15.3 on Mac OSX 10.8.4. > > I've included the entire dump below but the relevant error message seems to > be: > > ld: warning: ignoring file libmseed/libmseed.a, file was built for archive >> which is not the architecture being linked (i386): libmseed/libmseed.a > > > Compilation for x86_64 proceeds without a hitch. > > If anyone is curious, the package tarballs are available at: > > http://mazamascience.com/Downloads/ > > Thanks for any helpful suggestions about compiling Fortran on OSX. >This has nothing to do with Fortran (and it's not even Mac-specific) - you're using the wrong compiler flags for building the dependent library inside your package (as the message tells you: you are building 64-bit version of libmseed when compiling 32-bit version of the package). Please make sure you use the proper compiler and flags that R is providing (i.e., remove all conflicting flags from libmseed/Makefile). Cheers, Simon> Jon > > > $ R CMD INSTALL seismic_0.2.1.0.tar.gz > * installing to library > ?/Library/Frameworks/R.framework/Versions/2.15/Resources/library? > * installing *source* package ?seismic? ... > ** libs > *** arch - i386 > gcc -arch i386 -std=gnu99 > -I/Library/Frameworks/R.framework/Resources/include > -I/Library/Frameworks/R.framework/Resources/include/i386 -DNDEBUG > -Ilibmseed -I/usr/local/include -fPIC -fPIC -g -O2 -c parseMiniSEED.c > -o parseMiniSEED.o > gcc -O2 -Wall -fPIC -c -o fileutils.o fileutils.c > gcc -O2 -Wall -fPIC -c -o genutils.o genutils.c > gcc -O2 -Wall -fPIC -c -o gswap.o gswap.c > gcc -O2 -Wall -fPIC -c -o lmplatform.o lmplatform.c > gcc -O2 -Wall -fPIC -c -o lookup.o lookup.c > gcc -O2 -Wall -fPIC -c -o msrutils.o msrutils.c > gcc -O2 -Wall -fPIC -c -o pack.o pack.c > gcc -O2 -Wall -fPIC -c -o packdata.o packdata.c > gcc -O2 -Wall -fPIC -c -o traceutils.o traceutils.c > gcc -O2 -Wall -fPIC -c -o tracelist.o tracelist.c > gcc -O2 -Wall -fPIC -c -o parseutils.o parseutils.c > gcc -O2 -Wall -fPIC -c -o unpack.o unpack.c > gcc -O2 -Wall -fPIC -c -o unpackdata.o unpackdata.c > gcc -O2 -Wall -fPIC -c -o selection.o selection.c > gcc -O2 -Wall -fPIC -c -o logging.o logging.c > rm -f libmseed.a > ar -csq libmseed.a fileutils.o genutils.o gswap.o lmplatform.o lookup.o > msrutils.o pack.o packdata.o traceutils.o tracelist.o parseutils.o unpack.o > unpackdata.o selection.o logging.o > gcc -arch i386 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names > -undefined dynamic_lookup -single_module -multiply_defined suppress > -L/usr/local/lib -o seismic.so parseMiniSEED.o -Llibmseed -lmseed > -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework > -Wl,CoreFoundation > ld: warning: ignoring file libmseed/libmseed.a, file was built for archive > which is not the architecture being linked (i386): libmseed/libmseed.a > installing to > /Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386 > *** arch - x86_64 > gcc -arch x86_64 -std=gnu99 > -I/Library/Frameworks/R.framework/Resources/include > -I/Library/Frameworks/R.framework/Resources/include/x86_64 -DNDEBUG > -Ilibmseed -I/usr/local/include -fPIC -fPIC -g -O2 -c parseMiniSEED.c > -o parseMiniSEED.o > gcc -O2 -Wall -fPIC -c -o fileutils.o fileutils.c > gcc -O2 -Wall -fPIC -c -o genutils.o genutils.c > gcc -O2 -Wall -fPIC -c -o gswap.o gswap.c > gcc -O2 -Wall -fPIC -c -o lmplatform.o lmplatform.c > gcc -O2 -Wall -fPIC -c -o lookup.o lookup.c > gcc -O2 -Wall -fPIC -c -o msrutils.o msrutils.c > gcc -O2 -Wall -fPIC -c -o pack.o pack.c > gcc -O2 -Wall -fPIC -c -o packdata.o packdata.c > gcc -O2 -Wall -fPIC -c -o traceutils.o traceutils.c > gcc -O2 -Wall -fPIC -c -o tracelist.o tracelist.c > gcc -O2 -Wall -fPIC -c -o parseutils.o parseutils.c > gcc -O2 -Wall -fPIC -c -o unpack.o unpack.c > gcc -O2 -Wall -fPIC -c -o unpackdata.o unpackdata.c > gcc -O2 -Wall -fPIC -c -o selection.o selection.c > gcc -O2 -Wall -fPIC -c -o logging.o logging.c > rm -f libmseed.a > ar -csq libmseed.a fileutils.o genutils.o gswap.o lmplatform.o lookup.o > msrutils.o pack.o packdata.o traceutils.o tracelist.o parseutils.o unpack.o > unpackdata.o selection.o logging.o > gcc -arch x86_64 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names > -undefined dynamic_lookup -single_module -multiply_defined suppress > -L/usr/local/lib -o seismic.so parseMiniSEED.o -Llibmseed -lmseed > -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework > -Wl,CoreFoundation > installing to > /Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/x86_64 > ** R > ** inst > ** preparing package for lazy loading > Creating a generic function for ?as.vector? from package ?base? in package > ?seismic? > Creating a generic function for ?mean? from package ?base? in package > ?seismic? > Creating a generic function for ?median? from package ?stats? in package > ?seismic? > Creating a generic function for ?sd? from package ?stats? in package > ?seismic? > Creating a generic function for ?plot? from package ?graphics? in package > ?seismic? > ** help > *** installing help indices > ** building package indices > ** installing vignettes > ?seismic-intro.Rnw? > ** testing if installed package can be loaded > *** arch - i386 > Error in dyn.load(file, DLLpath = DLLpath, ...) : > unable to load shared object > '/Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386/seismic.so': > > dlopen(/Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386/seismic.so, > 6): Symbol not found: _ms_loginit > Referenced from: > /Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386/seismic.so > Expected in: flat namespace > in > /Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic/libs/i386/seismic.so > Error: loading failed > Execution halted > *** arch - x86_64 > ERROR: loading failed for ?i386? > * removing > ?/Library/Frameworks/R.framework/Versions/2.15/Resources/library/seismic? > > > -- > Jonathan Callahan, PhD > Mazama Science > 206-708-5028 > mazamascience.com > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel