Обсуждение: Undefined symbol
Hi,
Im writing a function in C (encode) for PG that uses blowfish encryption
here is how I compile it.
gcc -I/usr/src/postgresql-7.0.3/src/include
-I/usr/src/postgresql-7.0.3/src/backend -O2 -Wall -Wmissing-prototypes
-Wmissing-declarations -lcrypt
-I/usr/src/postgresql-7.0.3/src/interfaces/libpq
-I/usr/src/postgresql-7.0.3/src/include -fpic
-I/home/boulat/Funio.com/database/libblowfish.a -c -o encode.o
encode.c
it compiles nicely with 0 error or warnings,
then i do
gcc -shared -o encode.so encode.o
rm encode.o
so now im left we a ready to go encode.so , So now I add that function
to DB
testdb=# CREATE FUNCTION encode(text,text)
testdb-# RETURNS text
testdb-# AS '/home/boulat/Funio.com/database/encode.so'
testdb-# LANGUAGE 'C';
CREATE
no problems there either, BUT ...
testdb=# select encode('bob','bob');
ERROR: Load of file /home/boulat/Funio.com/database/encode.so failed:
/home/boulat/Funio.com/database/encode.so: undefined symbol:
BF_cfb64_encrypt
thats the function that I call from inside my c code...
but Why??? It compiled with no errors or warning, and I have all the
right includes in my source code.
Im confused!
Any help would be appreciated.
Regards,
Boulat Khakimov
--
Nothing Like the Sun
On Tue, Mar 06, 2001 at 06:44:31PM -0500, Boulat Khakimov wrote:
> Hi,
>
> Im writing a function in C (encode) for PG that uses blowfish encryption
> here is how I compile it.
>
> gcc -I/usr/src/postgresql-7.0.3/src/include
> -I/usr/src/postgresql-7.0.3/src/backend -O2 -Wall -Wmissing-prototypes
> -Wmissing-declarations -lcrypt
> -I/usr/src/postgresql-7.0.3/src/interfaces/libpq
> -I/usr/src/postgresql-7.0.3/src/include -fpic
> -I/home/boulat/Funio.com/database/libblowfish.a -c -o encode.o
> encode.c
I suspect you want
...
-L/usr/src/postgresql-7.0.3/src/interfaces/
/home/boulat/Funio.com/database/libblowfish.a -c -o encode -lpq
But I wonder if, libblowfish.a is compiled with position independent
code *and* if libpq is reachable by the backend database. I don't think
your libblowfish is getting linked into the object.
> it compiles nicely with 0 error or warnings,
>
> then i do
> gcc -shared -o encode.so encode.o
> rm encode.o
>
> so now im left we a ready to go encode.so , So now I add that function
> to DB
>
> testdb=# CREATE FUNCTION encode(text,text)
> testdb-# RETURNS text
> testdb-# AS '/home/boulat/Funio.com/database/encode.so'
> testdb-# LANGUAGE 'C';
> CREATE
>
> no problems there either, BUT ...
>
> testdb=# select encode('bob','bob');
> ERROR: Load of file /home/boulat/Funio.com/database/encode.so failed:
> /home/boulat/Funio.com/database/encode.so: undefined symbol:
> BF_cfb64_encrypt
>
> thats the function that I call from inside my c code...
> but Why??? It compiled with no errors or warning, and I have all the
> right includes in my source code.
>
> Im confused!
>
> Any help would be appreciated.
>
> Regards,
> Boulat Khakimov
>
> --
> Nothing Like the Sun
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
--
Eric G. Miller <egm2@jps.net>
"Eric G. Miller" wrote: > I suspect you want > ... > -L/usr/src/postgresql-7.0.3/src/interfaces/ > /home/boulat/Funio.com/database/libblowfish.a -c -o encode -lpq > > But I wonder if, libblowfish.a is compiled with position independent > code *and* if libpq is reachable by the backend database. I don't think > your libblowfish is getting linked into the object. > libblofish.a wasnt getting linked to encode.so , I fixed that now it works w/o a glitch! :) two way encoding in Postgres using blowfish!!! If anyone is interested im goin to put a source code on a webpage or something Life is good again :P Regards, Boulat Khakimov
--- Boulat Khakimov <boulat@inet-interactif.com> wrote: > "Eric G. Miller" wrote: > > I suspect you want > > ... > > -L/usr/src/postgresql-7.0.3/src/interfaces/ > > /home/boulat/Funio.com/database/libblowfish.a -c -o > encode -lpq > > > > But I wonder if, libblowfish.a is compiled with position > independent > > code *and* if libpq is reachable by the backend database. I > don't think > > your libblowfish is getting linked into the object. > > > > > libblofish.a wasnt getting linked to encode.so , I fixed that > now it works w/o a glitch! :) > > two way encoding in Postgres using blowfish!!! > > If anyone is interested im goin to put a source code on a > webpage or > something Encrypted authentication is always good :) Please provide the code. I'm very interested in seeing it. Thanks. Brent __________________________________________________ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/
On Tue, Mar 06, 2001 at 06:44:31PM -0500, Boulat Khakimov allegedly wrote:
> testdb=# select encode('bob','bob');
> ERROR: Load of file /home/boulat/Funio.com/database/encode.so failed:
> /home/boulat/Funio.com/database/encode.so: undefined symbol:
> BF_cfb64_encrypt
>
> thats the function that I call from inside my c code...
> but Why??? It compiled with no errors or warning, and I have all the
> right includes in my source code.
>
> Im confused!
Are you linking against a blowfish library? If so, either include the
encryption functions in your shared object, or load that shared object
yourself. Have a look at the dlopen manpage for more information.
I hope this helps a bit,
Mathijs
--
It's not that perl programmers are idiots, it's that the language
rewards idiotic behavior in a way that no other language or tool has
ever done.
Erik Naggum