Makefile for g++


 
Thread Tools Search this Thread
Top Forums Programming Makefile for g++
# 1  
Old 06-02-2016
Makefile for g++

Hi All,

We have moved our OS from Sun Solaris to Linux and also some of the compilers.
Our old makefile used to be as below:
Code:
CC=cc
FLAGS=-G -KPIC -DLG_SOLARIS_OS
DEFINES=-DSunOS
SYSLIBS=-lc
.SUFFIXES : .c
.c.o : ;$(CC) -c $(FLAGS) $(DEFINES) $*.c -o $*.o

TARGET=libBnkgIMDFIDSModelExecution.so

OBJS=$(SRCS:%.c=%.o)

SRCS= \
C0001apc.c \
 C0001bdc.c \
 C0001bfc.c \
 C0001bnc.c \
 C0001bsc.c \
 C0001buc.c \
 C0001chc.c \
 C0001cpc.c \
 C0001fnc.c \
 C0001gcc.c \
 C0001gvc.c \
 C0001utc.c

all : $(TARGET)

$(TARGET) : $(OBJS)
        CC -o $(TARGET) -G -mt $(OBJS) $(SYSLIBS)

Can you please let me know how to create one using g++ compiler?
I tried different things but getting an error.

Thanks
Shash

Last edited by Don Cragun; 06-02-2016 at 05:28 PM.. Reason: Change HTML tags to CODE tags.
# 2  
Old 06-02-2016
Your makefile is specifying that the compiler is to be used to compile code to run on Solaris systems and is telling the compiler to predefine the macro SunOS before compiling any of the source files used to build your project.

If you are hoping to build your project on a Linux system creating object files that will run on Solaris/SunOS systems, I don't think that will work unless Linux has recently added some cross-compilation environments that I have seen advertised.

If you are hoping to build your project to run on a Linux system as well as to be built on a Linux system, you will need to examine each of the source files in your project to find out what macros need to be predefined so that they will build correctly in your specific Linux environment instead of in the Solaris/SunOS environment your makefile specifies. If your code does not have #ifdef statements to select appropriate alternatives to SunOS specific segments of your code, you will need to modify those source files to #ifdef code in for your new environment and add the macros that your modified source uses by changing the line in your makefile from:
Code:
DEFINES=-DSunOS

to instead define the macros your sources files expect when building your project to run in your specific Linux environment as well as changing the two lines at the top of your makefile:
Code:
CC=cc
FLAGS=-G -KPIC -DLG_SOLARIS_OS

to:
Code:
CC=gcc

and set FLAGS to whatever options are appropriate for gcc in your environment for the type of code you're trying to build.
# 3  
Old 06-03-2016
Thanks for the reply Don Cragun. Apologies, I 'm not into C programming.
The code does have #ifdef in one of the .c file. Can you please let me know how to determine the flags/macros to be used.
# 4  
Old 06-03-2016
Not without:
  1. seeing the code,
  2. knowing complete details about the environment in which you plan to build your software,
  3. and complete details about the environment(s) in which you plan to run your software.
If your source code is depending on Solaris C library features and doesn't already include #ifdefs to use alternative glibc interfaces for general Linux systems or distribution specific libraries for the particular Linux system(s) you have decided to use instead of Solaris/SunOS, just changing macros in your makefile is not going to work. You have to actually write C source code that will work in your new, different environment(s).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

MakeFile

Hey everybody, This may be stup*d question for you, but i am new in unix and i wonder how can i make the rules for translating and linking my .c "primjer1.c", "primjer2.c" and "primjer3.c" in makefile. Thank you. (7 Replies)
Discussion started by: jskako
7 Replies

2. Shell Programming and Scripting

Makefile

Dear all, I have a quite simple question about how to manipulate "makefile.am". I intend to: 1. "CFLAGS" and "CXXFLAGS" have no value at all. I know that these values get "-g -O2" by default. On the other hand, when I try to set them as "CFLAGS = " in "makefile.am", I get warning messages... (4 Replies)
Discussion started by: Dandan
4 Replies

3. UNIX for Dummies Questions & Answers

Help with MakeFile

I'm really confused how to use a makefile. Are you supposed to be make a file from emacs called MakeFile and put code in there to compile? I am trying to create a makefile to compile two .cpp files in my current directory to produce two .o files and then link them... What I did was make a... (1 Reply)
Discussion started by: jzhang172
1 Replies

4. Homework & Coursework Questions

Makefile Help

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: I have been trying to make the program swap but i have been getting errors with the makefile such as driver.o:... (1 Reply)
Discussion started by: mgyeah
1 Replies

5. Homework & Coursework Questions

Help with Simple Multi-Level Makefile (Extremely New at Makefile)

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Basically, the prompt is make a makefile with various sub makefiles in their respective subdirectories. All code... (1 Reply)
Discussion started by: Tatl
1 Replies

6. UNIX for Advanced & Expert Users

Makefile executing another Makefile first?

I have 2 libraries in 2 different directories that I build with Makefiles. library B depends on library A. If I modify a .cpp file in library A and run lib B's Makefile can I have B's makefile to automatically rebuild library A? I am now rebuilding A, followed by B... but I'd like B to... (0 Replies)
Discussion started by: wwuster
0 Replies

7. UNIX for Advanced & Expert Users

Makefile problem - How to run module load in a Makefile

Hi, I'm trying to run the module load command in a Makefile and i'm getting the following error: make: module: command not found Why is this? Is there any way to run this command in a Makefile? NOTE: command - module load msjava/sunjdk/1.5.0 works fine outside of the Makefile (2 Replies)
Discussion started by: hernandinho
2 Replies

8. High Performance Computing

help with makefile

I am new to creating makefiles. I have several fortran programs in a folder called as "test" and also have several subroutines in another folder (which is inside this test folder) called as libry My makefile is in the folder "test" I want to create a makefile which can access the files in... (2 Replies)
Discussion started by: explorer
2 Replies

9. Programming

Makefile help

Hi, What I want to do is for make to reconstruct the target even if its dependencies have not changed. So, even if if the dependent files do not have a more recent timestamp, the commands are executed. The reason I want to do this.. 1)someone executes make on solaris. We have a solaris... (4 Replies)
Discussion started by: tantric
4 Replies

10. Programming

about the makefile

can anyone well explain how to create a makefile? especially those commands in the makefile? BTW, what is CFLAG? (2 Replies)
Discussion started by: ligerdave
2 Replies
Login or Register to Ask a Question