0

C プログラムをビルドできません。

ウェブカメラをアクティブにして録画を開始する v4l2 プログラムを開発しています。私はいくつかのインクルードを持っています: (それらはすべて問題ありません)

#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>

これらの機能は whitin /X11 です

以下の Eclipse、Netbeans、および Code::Blocks でこのエラーが発生するため、SO の問題であると確信しています。彼らは、ライブラリが見つからないことや内部参照が見つからないことについて不平を言うことはありません(私のインクルードにそれらのライブラリの内部が含まれています)。

Ubuntu 12、Debian 6 Squeezy、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)) ===|

Debian 7 Wheeze を使用しています...次のようにコンパイルしようとしています: gcc -O2 -L/usr/X11R6/lib -lX11 -lXext -o viewer viewer.c

このパスは存在しません。どうすれば正しいパスを見つけることができますか?

4

1 に答える 1

1

システム上の他の動的にリンクされた X プログラムのパスで ldd を実行して、ライブラリがどこからロードされているかを確認します。例えば

ldd /usr/bin/gnome-session
于 2013-03-07T02:45:27.597 に答える