1752586 Members
4062 Online
108788 Solutions
New Discussion юеВ

Re: Pro*C Error

 
SOLVED
Go to solution
NDhivya
Advisor

Pro*C Error

Hi,

When we try to compile and link a pro*c file we get the below error. Can any one highlight what might be causing the error ?

Operating System: HP-UX Itanium 11.31
Database: 10.2.0.4
Pro*C compiler version: pro*C/C++: Release 10.2.0.4.0
C/C++ Version: HP C/aC++ for Integrity Servers B3910B A.06.17 [Mar 4 2008]

/home/builddir $ make build_plc_barts
/opt/ansic/bin/cc -o plc_barts assign_plc_chan.o init_plc_devices.o plc_barts.o queue_plc4
ld: Mismatched ABI (not an ELF file) for -lclntsh, found /lib/hpux64/libclntsh.so
Fatal error.
*** Error exit code 1


/home/builddir $ make build_get_plc_data
Making Object files for get_plc_data.c
/opt/ansic/bin/cc -c +DD64 -I. -I../lib -I/u01/dba/oracle/product/10.2.0/precomp/public c
/opt/ansic/bin/cc -o get_plc_data get_plc_data.o -L/lib/hpux64 -L/u01/dba/oracle/product/14
ld: Unsatisfied symbol "sqlcx2t" in file get_plc_data.o
ld: Unsatisfied symbol "main" in file
2 errors.
*** Error exit code 1 (ignored)
/bin/rm -f get_plc_data.o

The make file has the following

# C compiler flags
CFLAGS= +DD64

LFLAGS= -L/lib/hpux64 -L/u01/dba/oracle/product/10.2.0/lib -lclntsh +DD64

# C compiler include directories
IFLAGS= -I. -I../lib $(PRECOMPPUBLIC) -I/u01/dba/oracle/product/10.2.0/precomp/public

build_get_plc_data: get_plc_data.o
-$(CC) -o get_plc_data get_plc_data.o $(LFLAGS)
$(RM) get_plc_data.o


If required we can upload the complete make file.

Thanks,
Dhivya
29 REPLIES 29
Dennis Handly
Acclaimed Contributor

Re: Pro*C Error

ld: Mismatched ABI (not an ELF file) for -lclntsh, found /lib/hpux64/libclntsh.so

What does "file /lib/hpux64/libclntsh.so" show?

cc -o get_plc_data get_plc_data.o -L/lib/hpux64 -L/u01/dba/oracle/product/14

>-L/lib/hpux64

This path is incorrect, remove it since it is the default. You also are missing +DD64.

I don't see any -l options to specify the shlibs?

LFLAGS= -L/lib/hpux64 ...

Remove this -L.
NDhivya
Advisor

Re: Pro*C Error

Thanks for your response Dennis.

file /lib/hpux64/libclntsh.so shows
ELF-64 shared object file - IA64

We get the below after removing /lib/hpux64 and removing -L from the LFLAGS

/opt/ansic/bin/cc -c +DD64 -I. -I../lib -I/u01/dba/oracle/product/1012ias/precomp/public plc_barts.c
/opt/ansic/bin/cc -o plc_barts assign_plc_chan.o init_plc_devices.o plc_barts.o queue_plc_read.o read_plc_ast.o translate4

ld: Mismatched ABI for -lclntsh, found /usr/lib/hpux64/libclntsh.so
Fatal error.
*** Error exit code 1

Thanks,
Dhivya
Dennis Handly
Acclaimed Contributor

Re: Pro*C Error

>file /lib/hpux64/libclntsh.so shows: ELF-64 shared object file - IA64

So you need a 64 bit application.

>cc -c +DD64 plc_barts.c
>cc -o plc_barts assign_plc_chan.o init_plc_devices.o plc_barts.o queue_plc_read.o read_plc_ast.o translate4
ld: Mismatched ABI for -lclntsh

What does file(1) show for each object file:
assign_plc_chan.o init_plc_devices.o plc_barts.o queue_plc_read.o read_plc_ast.o

To get a list of each linker input you can use "-Wl,-t".
NDhivya
Advisor

Re: Pro*C Error

assign_plc_chan.o: ELF-32 relocatable object file - IA64
init_plc_devices.o: ELF-32 relocatable object file - IA64
plc_barts.o: ELF-64 relocatable object file - IA64
queue_plc_read.o: ELF-32 relocatable object file - IA64
read_plc_ast.o: ELF-32 relocatable object file - IA64

It seems that C files uses 32 bit compiler.
All the files refers to /lib.

Please let us know what can be done.

Thanks,
Dhivya
Dennis Handly
Acclaimed Contributor

Re: Pro*C Error

>It seems that C files uses 32 bit compiler. Please let us know what can be done.

You need to find their makefiles and make sure CFLAGS has +DD64.
NDhivya
Advisor

Re: Pro*C Error

Hi Dennis,

Appreciate your immediate response.
We are very new to Pro*C and your suggestions are really useful for us.

We have deleted all the object files and created again with +DD64 in the make files.
Now we get C specific errors.

We have a lot of programs. Few programs throw errors and few throuws warnings.
For instance, We get an error saying "Argument was incompatible with formal parameter".

Also we got an error "Cannot load upload_trim_program.o" . We gave 777 permissions to the file and tried compiling it again. It threw an error saying "Execute Permission denied".

Please help.

Thanks,
Dhivya



Dennis Handly
Acclaimed Contributor

Re: Pro*C Error

>We are very new to Pro*C and your suggestions are really useful for us.

(I know very little about Pro*c.)

>Now we get C specific errors.

Then you need to stop and use the 32 bit version of libclntsh. Going to 64 bit requires porting work.

>We get an error saying "Argument was incompatible with formal parameter".

This is likely an error you would have to fix if you had to port.

>we got an error "Cannot load upload_trim_program.o". We gave 777 permissions to the file and tried compiling it again. It threw an error saying "Execute Permission denied".

Who is giving the error? Where are your error logs?
NDhivya
Advisor

Re: Pro*C Error

Hi Dennis,

I modified the CFLAGS and LFLAGS to +DD32 and tried compiling.

Now i get an error saying ". Stop.nnot read or get /u01/dba/oracle/product/10.2.0/precomp/lib/env_precomp.mk"

Please suggest.

Thanks,
Dhivya

Dennis Handly
Acclaimed Contributor

Re: Pro*C Error

>Now I get an error saying "Stop. cannot read or get /u01/dba/oracle/product/10.2.0/precomp/lib/env_precomp.mk"

Is this before or after the previous errors?
Any other errors in your make output?

Does this env_precomp.mk file exist?