ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
hi everyone!!i'm very happy to be one of the most great linux forums in the world and thanks for all great work that u do here!!
i'm new to linux i have some basic but still newer!!i have a project that i work on!!it's a product that has been installed and compiled in AIX system with xlc compiler!!my job here is to migrate this one to red hat linux entreprise 5 and compile all the makefile with GCC
also i have some .pc files that i'm trying to compile with pro*c !!and now i'm stuck with those errors :
$ make all
/usr/local/oracle/9.2.0/bin/proc sqlcheck=full userid=PSMS_USER/PSMS_USER dbms=v7 LINES=YES include=/home/oracle/Open2/COMMON/inc include=/home/oracle/Open2/ps/BOF/inc include=/home/oracle/Open2/ps/inc include=/home/oracle/Open2/ps/inc include=/home/oracle/Open2/syu/inc include=/home/oracle/Open2/lng/inc include=/home/oracle/Open2/lng/inc include=/home/oracle/Open2/com/inc iname=/home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.pc
Pro*C/C++: Release 9.2.0.4.0 - Production on Wed Jul 29 13:12:44 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
System default option values taken from: /usr/local/oracle/9.2.0/precomp/admin/pcscfg.cfg
Syntax error at line 365, column 6, file /home/oracle/Open2/ps/inc/ps_parslib_parsers.h:
Error at line 365, column 6 in file /home/oracle/Open2/ps/inc/ps_parslib_parsers
.h
bool CheckAndAssign_String(unsigned char dst_string[],
.....1
PCC-S-02201, Encountered the symbol "CheckAndAssign_String" when expecting one o
f the following:
; , = ( [
The symbol ";" was substituted for "CheckAndAssign_String" to continue.
Syntax error at line 376, column 6, file /home/oracle/Open2/ps/inc/ps_parslib_parsers.h:
Error at line 376, column 6 in file /home/oracle/Open2/ps/inc/ps_parslib_parsers
.h
bool get_send_log_flag(void);
.....1
PCC-S-02201, Encountered the symbol "get_send_log_flag" when expecting one of th
e following:
; , = ( [
The symbol ";" was substituted for "get_send_log_flag" to continue.
Syntax error at line 139, column 4, file /home/oracle/Open2/ps/BOF/inc/ps_bof_comlib_envdata.h:
Error at line 139, column 4 in file /home/oracle/Open2/ps/BOF/inc/ps_bof_comlib_
envdata.h
Input_Queue_Data BOF_iq;
...1
PCC-S-02201, Encountered the symbol "Input_Queue_Data" when expecting one of the
following:
Syntax error at line 0, column 0, file /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.pc:
Error at line 0, column 0 in file /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_l
rmdb.pc
PCC-S-02201, Encountered the symbol "<eof>" when expecting one of the following:
; : an identifier, end-exec, random_terminal
Error at line 0, column 0 in file /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_l
rmdb.pc
PCC-F-02102, Fatal error while doing C preprocessing
make: *** [/home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.c] Erreur 1
i saerched for the definition of the checkandassign_string function and i found it in another directory in the ps_parslib_parsers.c :
...
/*-----------------------------------------------------------------------------
FUNCTION CheckAndAssign_String
The function executes a copy between strings and then frees the source
string; the length of the source string is checked before assigning it
to the destination string.
The function must be used only with str_val as the source string (it is
the value returned by the parser).
---------------------------------------------------------------------------*/
also the input_Queue_Data that figures in the errors i found it in one .h lib like this :
/*=============================================================================
INPUT QUEUE DATA
===========================================================================*/
/*-----------------------------------------------------------------------------
TYPES AND STRUCTURES
---------------------------------------------------------------------------*/
typedef struct
{
/* name of the alias queue */
unsigned char nameIQ_NAME_LEN+1;
/* handle of the alias queue */
CLHOBJ handle;
} Input_Queue_Data;
/*=============================================================================
QUEUE MANAGER DATA
===========================================================================*/
/*-----------------------------------------------------------------------------
TYPES AND STRUCTURES
---------------------------------------------------------------------------*/
typedef struct
{
/* time of the wait reading operation on the BOF input queue */
unsigned long wait_time;
/* id of the connection to the queue manager */
CLHCONN connection_id;
/* input queue of BOF process */
Input_Queue_Data BOF_iq;
/* input queue of PSM Scheduler process */
Input_Queue_Data PSM_sched_iq;
} Queue_Manager_Data;
i will be grateful if u help me figure this out!!!if u need any explanation i'm here and thanks again!!
The OP pasted in a whole lot of stuff, most of which doesn't tell us anything. But the quoted errors tell us the C compiler hasn't seen a typedef for bool and doesn't have one built in.
In C++, bool is a built-in type. In C it is not.
The harder thing to guess is where the typedef for bool was supposed to come from. It seems implied that this source code worked elsewhere and is being ported. I assume it is C (not C++) code in both places, so I don't know where the typedef for bool was supposed to be found.
one of the member give me an advice to put in the line of pro*c this CODE=CPP and it's seem work but with some errors:
Citation:
make all
gcc -c -DLINUX -DUNIX_OPSYS -DDEBUG -I/home/oracle/Open2/COMMON/inc -I/home/oracle/Open2/dbg -I. -I/home/oracle/Open2/ps/BOF/inc -I/home/oracle/Open2/ps/inc -I/home/oracle/Open2/ps/inc -I/home/oracle/Open2/com/inc -I/home/oracle/Open2/syu/inc -I/home/oracle/Open2/lng/inc -I/usr/local/oracle/9.2.0/precomp/public /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.c
/home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.c:117: erreur: expected identifier or ‘(’ before string constant
/home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.c:131: erreur: expected identifier or ‘(’ before string constant
make: *** [/home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.o] Erreur 1
et le code c'est le suivant:
// Forms Interface
static const int IAPSUCC = 0;
static const int IAPFAIL = 1403;
static const int IAPFTL = 535;
extern "C" { void sqliem(char *, int *); }/*VOICI LA LIGNE ERREUR 131*/
I think those errors indicate you're not linking a reqd lib file supplied by Oracle. Unfortunately, its been a long time since I used Pro*C, so I can't tell you what it is.
'extern' means declared here but defined elsewhere (iirc).
one of the member give me an advice to put in the line of pro*c this CODE=CPP and it's seem work but with some errors:
It appears that some of the code you are trying to compile is C++ code in files with .c extensions.
That explains why you had a problem with bool which is built into C++ but can't be used in C without having a typedef for it. It also explains why you have a failure with extern "C" which is valid C++ code but meaningless in C.
That CODE=CPP thing sounds like it is intended to deal with that (tell the compiler to ignore the .c extension and process C++ code). But I've never heard of CODE=CPP so I don't know how it should be used and I didn't understand your description of how you did use it.
If it removed the errors with bool then it partially worked. If it didn't remove the error with extern "C" then it didn't completely work, because that is more of the same error. The code is C++ but the compiler was expecting C.
With GCC there are a few ways to force the compiler to process C++ code ignoring the .c extensions. If you are in control of the compile command lines, that may be a simple answer. But I get the idea the compile command lines are put together for you by a complicated makefile. In that case, it may be harder to figure out what to change in order to cause the makefile to generate the compile commands that cause gcc to process C++ code.
I don't speak any French, which makes it a little harder to read your posts, but your posts would be very hard to read even if they were 100% English. Code tags would help. But mainly you need a bit more and better explanation of what you're trying to accomplish and what exactly you did.
Quote:
Originally Posted by chrism01
I think those errors indicate you're not linking a reqd lib file supplied by Oracle.
I see only compile time errors that certainly don't mean anything like that. So I have no idea where you're seeing that.
Quote:
'extern' means declared here but defined elsewhere (iirc).
Yes, but extern "C" means something else (in addition to or instead of meaning defined elsewhere).
It can be used in C++ code to declare C code defined elsewhere so that C code may be called by this C++ code.
It can also be used to define C++ code (defined here) which presents a C interface so it can be called by C code elsewhere and/or called by other C++ that thinks it is calling C code.
It appears that some of the code you are trying to compile is C++ code in files with .c extensions.
That explains why you had a problem with bool which is built into C++ but can't be used in C without having a typedef for it. It also explains why you have a failure with extern "C" which is valid C++ code but meaningless in C.
That CODE=CPP thing sounds like it is intended to deal with that (tell the compiler to ignore the .c extension and process C++ code). But I've never heard of CODE=CPP so I don't know how it should be used and I didn't understand your description of how you did use it.
If it removed the errors with bool then it partially worked. If it didn't remove the error with extern "C" then it didn't completely work, because that is more of the same error. The code is C++ but the compiler was expecting C.
With GCC there are a few ways to force the compiler to process C++ code ignoring the .c extensions. If you are in control of the compile command lines, that may be a simple answer. But I get the idea the compile command lines are put together for you by a complicated makefile. In that case, it may be harder to figure out what to change in order to cause the makefile to generate the compile commands that cause gcc to process C++ code.
I don't speak any French, which makes it a little harder to read your posts, but your posts would be very hard to read even if they were 100% English. Code tags would help. But mainly you need a bit more and better explanation of what you're trying to accomplish and what exactly you did.
I see only compile time errors that certainly don't mean anything like that. So I have no idea where you're seeing that.
Yes, but extern "C" means something else (in addition to or instead of meaning defined elsewhere).
It can be used in C++ code to declare C code defined elsewhere so that C code may be called by this C++ code.
It can also be used to define C++ code (defined here) which presents a C interface so it can be called by C code elsewhere and/or called by other C++ that thinks it is calling C code.
thanks a lot of your help and a good explanation!!CODE=CPP i use it in the pro*c line of precompilation!!know i use this solution and i do some modification that can put away the error related to extern "C" biut i'm afraid that not the correct solution and after that in the execution all goes wrong!!
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.