0

Cannot build my C program.

I am developing a v4l2 program to activate my webcam and start recording. I have several includes: (They are all ok)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>             /* getopt_long() */
#include <unistd.h>
#include <errno.h>
#include <stdint.h>

#include <sys/ipc.h>
#include <sys/shm.h>
#include <X11/Xlib.h>
#include <X11/extensions/XShm.h>

Those functions are whitin /X11

I this erros below in Eclipse, Netbeans and Code::Blocks so I am sure it is a S.O issue. They don't complaing about not finding libraries nor internal references not found (includes inside of those libraries in my includes).

I have tried on Ubuntu 12, Debian 6 Squeezy and 7 Wheezy.

||=== Build: Release in v4l2 (compiler: GNU GCC Compiler) ===|
obj/Release/viewer.o||In function `image_destroy':|
viewer.c|| undefined reference to `XDestroyImage'|
viewer.c|| undefined reference to `XFreeGC'|
viewer.c|| undefined reference to `XShmDetach'|
viewer.c|| undefined reference to `XFreePixmap'|
obj/Release/viewer.o||In function `image_create':|
viewer.c|| undefined reference to `XCreateGC'|
viewer.c|| undefined reference to `XGetWindowAttributes'|
viewer.c|| undefined reference to `XShmCreateImage'|
viewer.c|| undefined reference to `XShmAttach'|
viewer.c|| undefined reference to `XCreateImage'|
viewer.c|| undefined reference to `XShmQueryExtension'|
viewer.c|| undefined reference to `XShmPixmapFormat'|
viewer.c|| undefined reference to `XShmCreatePixmap'|
obj/Release/viewer.o||In function `image_put':|
viewer.c|| undefined reference to `XPutImage'|
viewer.c|| undefined reference to `XShmPutImage'|
obj/Release/viewer.o||In function `main':|
viewer.c:(.text.startup+0x186)||undefined reference to `XOpenDisplay'|
viewer.c:(.text.startup+0x1ac)||undefined reference to `XScreenOfDisplay'|
viewer.c:(.text.startup+0x1e9)||undefined reference to `XCreateSimpleWindow'|
viewer.c:(.text.startup+0x244)||undefined reference to `XMapRaised'|
viewer.c:(.text.startup+0x25e)||undefined reference to `XStoreName'|
viewer.c:(.text.startup+0x27b)||undefined reference to `XGetWindowAttributes'|
viewer.c:(.text.startup+0x8c6)||undefined reference to `XPending'|
viewer.c:(.text.startup+0x8e3)||undefined reference to `XNextEvent'|
viewer.c:(.text.startup+0xa85)||undefined reference to `XPending'|
viewer.c:(.text.startup+0xaa2)||undefined reference to `XNextEvent'|
viewer.c:(.text.startup+0xedf)||undefined reference to `XPending'|
viewer.c:(.text.startup+0xefc)||undefined reference to `XNextEvent'|
||=== Build failed: 26 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

I am using debian 7 Wheeze... I am trying to compile in this way: gcc -O2 -L/usr/X11R6/lib -lX11 -lXext -o viewer viewer.c

This path does not exist, how can I find the right path?

Guilherme Longo
  • 2,278
  • 7
  • 44
  • 64
  • Your link ordering seems to be incorrect. [A helpful answer to a similar question][1] [1]: http://stackoverflow.com/a/18326228/2081316 – orbitor Dec 10 '13 at 20:08

1 Answers1

1

Run ldd on the path of some other dynamically linked X program on your system to see where the libs are loaded from. E.g.

ldd /usr/bin/gnome-session
jeffmagill
  • 191
  • 1
  • 6