Many thanks to Ms. Pamela Price and Mr. Burch Seymour and many others who
promptly helped me.
Here is the solution:
(1) To compile the Fortran program, we need two options:
-nofor_main (to indicate that the Fortran program is only a subroutine)
-assume nounderscore (so that the underscore is not added to the program
name)
(2) To link using the linker directly (i.e. ld), we need to link with the
object /usr/lib/cmplrs/cc/crt0.o;
We also needs the options
-lc (for the C library libc.so or libc.a)
-lfor (for the Fortran library libfor.so or libfor.a)
Thank you again for the quick and effective help. I really appreaciate
it.
Duc-Chi Tran (613) 951-3626 duc-chi.tran_at_a.statcan.ca
Chief, Systems Support Section / Chef, section du soutien des systèmes
Industry Measures & Analysis Division / Division des mesures et de
l'analyse des industries
Statistics Canada / Statistique Canada
Visit our Web Site / Visitez notre site
http://www.statcan.ca
For our employees, visit / Pour nos employés, visitez
http://www.imad.statcan.ca
-----Original Message-----
From: Tran, Duc-Chi
Sent: Thursday, February 18, 1999 9:26 AM
To: 'alpha-osf-managers'; 'Tran, Duc-Chi (old internet)'
Subject: Mixing C and Fortran
Hello Guru,
We need help badly and urgently. Please ALSO reply directly to my email
tranduc_at_statcan.ca. Thank you.
I cannot create one single executable module from a C program calling a
Fortran 90 subroutine. The link-edit step fails with "unresolved"
reference. And it has to do with my not knowing how to use the flags of
the link-editor (ld) to link to supporting libraries of C and Fortran. To
validate my theorie, I did the following simple test:
(1) I created a simple C program (called test.c) with a printf statement.
(2) I complied and linked it with the cc command as belows and it worked
fine:
cc -o test test.c
(3) I compiled and linked it SEPARATELY using only the cc command as
belows and it also worked:
cc -o test.o test.c
cc -o test test.o
(4) However, when I tried to compile it with cc and link it with ld, it
failed:
cc -o test.o test.c
ld -o test test.c
And the message was "Unresolved: printf"
(5) I read the man pages of cc, F90, and ld very carefully and used all
sort of -L and -l flags, but could not solve the problem
Please help.
Duc-Chi Tran (613) 951-3626 tranduc_at_statcan.ca
Chief, Systems Support Section / Chef, section du soutien des systèmes
Industry Measures & Analysis Division / Division des mesures et de
l'analyse des industries
Statistics Canada / Statistique Canada
Visit our Web Site / Visitez notre site
http://www.statcan.ca
For our employees, visit / Pour nos employés, visitez
http://www.imad.statcan.ca
Received on Thu Feb 18 1999 - 22:53:58 NZDT