- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'm using Apple Xcode 2.4.1 and Intel Fortran v9.1.034 for Mac OS X running on a MacPro, OS: 10.4.8.
I am trying to link a dylib that contains a bunch of archive files of Fortran modules (compiled by me). I need to use the Apple "-all_load" linker flag to make sure all symbols from the Fortran archives get pulled into the dylib.
I also need to link in the Fortran runtime (libifcore.a), but when i do I also need to link in libimf.a and libirc.a. When I link in libirc.a, I get multiple symbol definition errors and I'm not sure what I need to do to fix this. Libirc.a is colliding with libgcc.a. Anyone offer any help? Thank you very much for any insight, I appreciate it.
Here is linker output and errors (I've put newlines in for readability):
g++ -o /src/cs_work2/macosx-i386/awlib/libawlib.dylib.1
-O0
-single_module
-all_load
/src/cs_work2/macosx-i386/lib/libawaxl.a
/src/cs_work2/macosx-i386/lib/libawbas.a
/src/cs_work2/macosx-i386/lib/libawdat.a
/src/cs_work2/macosx-i386/lib/libawmth.a
/src/cs_work2/macosx-i386/lib/libawss.a
/src/cs_work2/macosx-i386/lib/libawtsg.a
/src/cs_work2/macosx-i386/lib/libawutl.a
/src/cs_work2/macosx-i386/lib/libawxf.a
/src/cs_work2/macosx-i386/lib/libawxml.a
/src/cs_work2/macosx-i386/lib/libifcore.a
/src/cs_work2/macosx-i386/lib/libimf.a
/src/cs_work2/macosx-i386/lib/libirc.a
/src/cs_work2/macosx-i386/lib/libalval.a
-dynamiclib
-L/src/cs_work2/macosx-i386/lib
-L/src/licsdk/SDK/alval/MacOSX-i386
-L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib
/src/cs_work2/macosx-i386/awlib/procntry.o
/src/cs_work2/macosx-i386/awlib/blckdata.o
/src/cs_work2/macosx-i386/awlib/tranblck.o
-ltempdir
-lplatdep
-lsvrdmgr
-ldatasrc
-laiocv
-lsvrdmgr
-lsvrerrs
-lreadonly
-lcvtrans
-ltmsutil
-lxerces-c
-lvizchart
-lxalan-c
-licuuc
-licudata
-licui18n
-lvserial
-lvutility
-lamsgs
-lademg
-lsfthread
-lxalanMsg
-lsockbsd
-lpthread
-ldl
-liconv
-llssrv
ld: multiple definitions of symbol ___muldi3
/src/cs_work2/macosx-i386/lib/libirc.a(mul64_gcc.o) definition of ___muldi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_muldi3.o) private external definition of ___muldi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___lshrdi3
/src/cs_work2/macosx-i386/lib/libirc.a(ushiftr64_gcc.o) definition of ___lshrdi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_lshrdi3.o) private external definition of ___lshrdi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___ashldi3
/src/cs_work2/macosx-i386/lib/libirc.a(shiftl64_gcc.o) definition of ___ashldi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_ashldi3.o) private external definition of ___ashldi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___ashrdi3
/src/cs_work2/macosx-i386/lib/libirc.a(shiftr64_gcc.o) definition of ___ashrdi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_ashrdi3.o) private external definition of ___ashrdi3 in section (__TEXT,__text)
ld: mult iple definitions of symbol ___divdi3
/src/cs_work2/macosx-i386/lib/libirc.a(udiv64_gcc.o) definition of ___divdi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_divdi3.o) private external definition of ___divdi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___moddi3
/src/cs_work2/macosx-i386/lib/libirc.a(urem64_gcc.o) definition of ___moddi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_moddi3.o) private external definition of ___moddi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___udivdi3
/src/cs_work2/macosx-i386/lib/libirc.a(udiv64_gcc.o) definition of ___udivdi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_udivdi3.o) private external definition of ___udivdi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___umoddi3
/src/cs_work2/macosx-i386/lib/libirc.a(urem64_gcc.o) definition of ___umoddi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_umoddi3.o) private external definition of ___umoddi3 in section (__TEXT,__text)
ld: warning can't open dynamic library: @executable_path/../lib/libfmsgs.dylib.1 referenced from: /src/cs_work2/macosx-i386/lib/libsvrdmgr.dylib (checking for undefined symbols may be affected) (No such file or directory, errno = 2)
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libgcc_s.10.4.dylib(_divdi3_s.o) definition of ___divdi3
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libgcc_s.10.4.dylib(_udivdi3_s.o) definition of ___udivdi3
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libgcc_s.10.4.dylib(_umoddi3_s.o) definition of ___umoddi3
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libgcc_s.10.4.dylib(_moddi3_s.o) definition of ___moddi3
/usr/bin/libtool: internal link edit command failed
+ retcode=1
+ '[' 1 = 0 ']'
+ exit 1
make[1]: *** [libawlib.dylib] Error 1
make: *** [export] Error 2
I'm using Apple Xcode 2.4.1 and Intel Fortran v9.1.034 for Mac OS X running on a MacPro, OS: 10.4.8.
I am trying to link a dylib that contains a bunch of archive files of Fortran modules (compiled by me). I need to use the Apple "-all_load" linker flag to make sure all symbols from the Fortran archives get pulled into the dylib.
I also need to link in the Fortran runtime (libifcore.a), but when i do I also need to link in libimf.a and libirc.a. When I link in libirc.a, I get multiple symbol definition errors and I'm not sure what I need to do to fix this. Libirc.a is colliding with libgcc.a. Anyone offer any help? Thank you very much for any insight, I appreciate it.
Here is linker output and errors (I've put newlines in for readability):
g++ -o /src/cs_work2/macosx-i386/awlib/libawlib.dylib.1
-O0
-single_module
-all_load
/src/cs_work2/macosx-i386/lib/libawaxl.a
/src/cs_work2/macosx-i386/lib/libawbas.a
/src/cs_work2/macosx-i386/lib/libawdat.a
/src/cs_work2/macosx-i386/lib/libawmth.a
/src/cs_work2/macosx-i386/lib/libawss.a
/src/cs_work2/macosx-i386/lib/libawtsg.a
/src/cs_work2/macosx-i386/lib/libawutl.a
/src/cs_work2/macosx-i386/lib/libawxf.a
/src/cs_work2/macosx-i386/lib/libawxml.a
/src/cs_work2/macosx-i386/lib/libifcore.a
/src/cs_work2/macosx-i386/lib/libimf.a
/src/cs_work2/macosx-i386/lib/libirc.a
/src/cs_work2/macosx-i386/lib/libalval.a
-dynamiclib
-L/src/cs_work2/macosx-i386/lib
-L/src/licsdk/SDK/alval/MacOSX-i386
-L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib
/src/cs_work2/macosx-i386/awlib/procntry.o
/src/cs_work2/macosx-i386/awlib/blckdata.o
/src/cs_work2/macosx-i386/awlib/tranblck.o
-ltempdir
-lplatdep
-lsvrdmgr
-ldatasrc
-laiocv
-lsvrdmgr
-lsvrerrs
-lreadonly
-lcvtrans
-ltmsutil
-lxerces-c
-lvizchart
-lxalan-c
-licuuc
-licudata
-licui18n
-lvserial
-lvutility
-lamsgs
-lademg
-lsfthread
-lxalanMsg
-lsockbsd
-lpthread
-ldl
-liconv
-llssrv
ld: multiple definitions of symbol ___muldi3
/src/cs_work2/macosx-i386/lib/libirc.a(mul64_gcc.o) definition of ___muldi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_muldi3.o) private external definition of ___muldi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___lshrdi3
/src/cs_work2/macosx-i386/lib/libirc.a(ushiftr64_gcc.o) definition of ___lshrdi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_lshrdi3.o) private external definition of ___lshrdi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___ashldi3
/src/cs_work2/macosx-i386/lib/libirc.a(shiftl64_gcc.o) definition of ___ashldi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_ashldi3.o) private external definition of ___ashldi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___ashrdi3
/src/cs_work2/macosx-i386/lib/libirc.a(shiftr64_gcc.o) definition of ___ashrdi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_ashrdi3.o) private external definition of ___ashrdi3 in section (__TEXT,__text)
ld: mult iple definitions of symbol ___divdi3
/src/cs_work2/macosx-i386/lib/libirc.a(udiv64_gcc.o) definition of ___divdi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_divdi3.o) private external definition of ___divdi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___moddi3
/src/cs_work2/macosx-i386/lib/libirc.a(urem64_gcc.o) definition of ___moddi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_moddi3.o) private external definition of ___moddi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___udivdi3
/src/cs_work2/macosx-i386/lib/libirc.a(udiv64_gcc.o) definition of ___udivdi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_udivdi3.o) private external definition of ___udivdi3 in section (__TEXT,__text)
ld: multiple definitions of symbol ___umoddi3
/src/cs_work2/macosx-i386/lib/libirc.a(urem64_gcc.o) definition of ___umoddi3 in section (__TEXT,__text)
/usr/lib/gcc/i686-apple-darwin8/4.0.1/libgcc.a(_umoddi3.o) private external definition of ___umoddi3 in section (__TEXT,__text)
ld: warning can't open dynamic library: @executable_path/../lib/libfmsgs.dylib.1 referenced from: /src/cs_work2/macosx-i386/lib/libsvrdmgr.dylib (checking for undefined symbols may be affected) (No such file or directory, errno = 2)
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libgcc_s.10.4.dylib(_divdi3_s.o) definition of ___divdi3
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libgcc_s.10.4.dylib(_udivdi3_s.o) definition of ___udivdi3
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libgcc_s.10.4.dylib(_umoddi3_s.o) definition of ___umoddi3
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libgcc_s.10.4.dylib(_moddi3_s.o) definition of ___moddi3
/usr/bin/libtool: internal link edit command failed
+ retcode=1
+ '[' 1 = 0 ']'
+ exit 1
make[1]: *** [libawlib.dylib] Error 1
make: *** [export] Error 2
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It might be possible to work around the problem by statically linking Intel libraries and dynamically linking the system libraries. It worked for me in Linux were there was a conflict with a newer gcc version. In Linux, the flag to do this is "-i-static" (but the flag is getting renamed in newer releases.)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Two thoughts occur to me:
when compiling the Fortran, try the -cxxlib-gcc option. This will use c++ libs from gcc rather than Intel. I suspect this may remove the dependency on libirc. And use -i-static also as mentioned previously.
The other option - try using ifort as your linker instead of g++. But I suspect this will be much more complex. You could try to use ld explicitly. Again, this may be overkill.
ron

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page