web-dev-qa-db-ja.com

`XShmQueryVersion 'への未定義の参照

単純なX11関数を使用する単純なコードベースをコンパイルしようとしていますが、コンパイル時にエラーが発生します。

(.text+0x1c): undefined reference to `XShmQueryVersion'

コードでXShmQueryVersion関数を使用し、

g++ myprogram.c -o program

何が足りないのですか?

1
Junaid

X11関数を見つけるライブラリをコンパイラに指示する必要があります。XOpenDisplayなどのコアX関数はlibX11にあり、拡張機能はlibXext)などの追加ライブラリにあります。XShmQueryVersionの場合。

これらのライブラリとリンクするようにコンパイラに指示する直接的な方法は、-lフラグを使用することです。

g++ myprogram.c -o program -lXext -lX11

Makefileなどを使用してより大きなソフトウェアを構築すると、これらのライブラリのフラグを管理するのに役立つツールがあり、Makefileに次のようなものがある可能性があります。

CFLAGS += `pkg-config --cflags x11 xext`
LIBS += `pkg-config --libs x11 xext`
2
alanc