Search Postgresql Archives

Re: /usr/bin/ld: cannot find [...] when compiling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Janek Sendrowski" <janek12@xxxxxx> writes:
> The file test.c just inlcudes: #include "postgres.h".
> root@ubuntu:/usr/include/postgresql/9.3/server# gcc test.c
> In file included from postgres.h:48:0,
>                  from test.c:1:
> utils/elog.h:69:28: fatal error: utils/errcodes.h: No such file or directory
> compilation terminated.

> If elog.h file only includes "errcodes.h" without /utils, it's working.
> It's the same With all files I'm including.

> Makefile: 
> PROGRAM = test
> DATA = test.c

> PG_CONFIG = pg_config
> PGXS := $(shell $(PG_CONFIG) --pgxs)
> include $(PGXS)

> root@ubuntu:/usr/include/postgresql/9.3/server# make
> gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -fPIC -pie -I/usr/include/mit-krb5 -DLINUX_OOM_ADJ=0 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g   -L/usr/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -L/usr/lib/mit-krb5 -L/usr/lib/i386-linux-gnu/mit-krb5 -L/usr/lib/i386-linux-gnu  -Wl,--as-needed  -lpgport -lpgcommon -lxslt -lxml2 -lpam -lssl -lcrypto -lkrb5 -lcom_err -lgssapi_krb5 -lz -ledit -lcrypt -ldl -lm  -o test

It looks like the problem is that there aren't any Postgres-specific -I
flags in the make command.  After a bit of poking around in the pgxs code
I think the reason why not is that you're using the PROGRAM target instead
of MODULES or MODULE_big.  This might be a bug in our makefiles, but it's
also somewhat defensible, in that if you're building a standalone program
then you aren't going to have access to any server internal functions.

What's your actual goal here --- are you trying to build a server
extension or a standalone program?  If the former, you should be using the
MODULES or MODULE_big targets.  If the latter, you should probably be
including postgres_fe.h not postgres.h.

> /usr/bin/ld: cannot find -lxslt
> /usr/bin/ld: cannot find -lxml2
> /usr/bin/ld: cannot find -lpam
> /usr/bin/ld: cannot find -ledit
> collect2: ld returned 1 exit status
> make: *** [test] Error 1

> I don't know where to get these devel-packages.

Since you let slip that you're using ubuntu, they probably have names
ending in -dev not -devel.

			regards, tom lane


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux