Skip site navigation (1) Skip section navigation (2)

Re: cpp Makefiles

From: Lonnie Cumberland <lonnie_cumberland(at)yahoo(dot)com>
To: Peter Eisentraut <peter_e(at)gmx(dot)net>
Cc: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: cpp Makefiles
Date: 2001-04-15 00:23:22
Message-ID: 20010415002322.69371.qmail@web12502.mail.yahoo.com (view raw or flat)
Thread:
Lists: pgsql-interfacespgsql-sql
Hello Peter,

I am in the process of downloading the new 7.1 PostgreSQL and will update my
system from the 7.03 version.

Actually there is not a problem in compiling the examples in the
interfaces/libpq++ directory and those work just fine.

I will try to explain the problem and the steps that I have taken to get that
problem generated in the hopes that it will help illuminate the error.

I have a simple test function:

-----------------------------------------------------------------------------  
                                           
#include "postgres.h"           // for variable length type
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
 
#include <unistd.h>             // for unix crypt function
 
text *
concat_text(text *arg1, text *arg2);
 
text *
concat_text(text *arg1, text *arg2)
{
    int32 new_text_size = VARSIZE(arg1) + VARSIZE(arg2) - VARHDRSZ;
    text *new_text = (text *) malloc(new_text_size);
 
    memset((void *) new_text, 0, new_text_size);
    VARSIZE(new_text) = new_text_size;
    strncpy(VARDATA(new_text), VARDATA(arg1), VARSIZE(arg1)-VARHDRSZ);
    strncat(VARDATA(new_text), VARDATA(arg2), VARSIZE(arg2)-VARHDRSZ);
    return (new_text);
}
                                                                               
        
-------------------------------------------------------------------------

which I have saved as two different files for testing:

files: "funcs.c" and "funcs.cc"

load into the pgsql command interpreter the registration of this function:

"psql -f funcs.sql -d trdata"

the "funcs.sql" is simply:

------------------------------------------------------------------------------
DROP FUNCTION concat_text(text, text);
CREATE FUNCTION concat_text(text, text) RETURNS text
AS '/treazurac/funcs.so' LANGUAGE 'c';
------------------------------------------------------------------------------ 

Now then, the two different outcomes are:

Outcome A:
1. I do a "make" with just the "funcs.c" program in the directory and the
"funcs.so" is created just fine.

I get the following messages:
-------------------------------------------------------------------------
[root(at)Treazurac /test]# make
gcc -I./include -I./backend   -O2 -Wall -Wmissing-prototypes
-Wmissing-declarations -I/usr/include/pgsql -I/usr/include -fpic   -c -o
funcs.o funcs.c
gcc -shared -o funcs.so funcs.o
rm funcs.o
----------------------------------------------------------------------------  

2. Enter the "psql trdata"

3. do a "select concat_text('a','b');

and the result is a string "ab" just as expected. 

Outcome B:
1. I do a "make" with just the "funcs.cc".

This time the g++ compiler is called and I get:
-------------------------------------------------------------------------
g++    -c -o funcs.o funcs.cc
funcs.cc:23: postgres.h: No such file or directory
make: *** [funcs.o] Error 1                         
--------------------------------------------------------------------------

I have tried adjusting the INCLUDES and LIB paths but is seems that there is
some other things going on in the Makefile, Makefile.global, or Makefile.port
because I cannot simply enter the same "gcc" line to get a usable "funcs.so".

The reason that I need this to work is because I will be adding some c++
functions to the "funcs.cc" file and also need to be able to link in those
libraries as well.

Cheers,
Lonnie


__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail. 
http://personal.mail.yahoo.com/

In response to

pgsql-interfaces by date

Next:From: Brett W. McCoyDate: 2001-04-15 00:41:09
Subject: DBD::Pg 0.96 and DBI 1.15 ignoring username and password
Previous:From: Peter EisentrautDate: 2001-04-14 22:29:49
Subject: Re: cpp Makefiles

pgsql-sql by date

Next:From: Lonnie CumberlandDate: 2001-04-15 00:46:15
Subject: g++ not working for postgresql extension languages?
Previous:From: Peter EisentrautDate: 2001-04-14 22:29:49
Subject: Re: cpp Makefiles

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group