質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Q&A

解決済

1回答

2022閲覧

XLibを使ったアプリケーションのコンパイルに失敗する

yukkuri

総合スコア624

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

0グッド

0クリップ

投稿2018/12/01 09:06

前提・実現したいこと

現在、質問にあるようにXLibを使用したアプリケーションを作ろうとしています。
ネットを参考にして、プログラムを記述し終わり、コンパイルをしようとしたところ、
エラーが発生しました。

発生している問題・エラーメッセージ

/tmp/cc96gk9h.o: 関数 `main' 内: test.c:(.text+0x10): `XOpenDisplay' に対する定義されていない参照です test.c:(.text+0xdc): `XCreateSimpleWindow' に対する定義されていない参照です test.c:(.text+0xf0): `XSelectInput' に対する定義されていない参照です test.c:(.text+0xfc): `XMapWindow' に対する定義されていない参照です test.c:(.text+0x10c): `XNextEvent' に対する定義されていない参照です test.c:(.text+0x164): `XFillRectangle' に対する定義されていない参照です test.c:(.text+0x1b0): `XDrawString' に対する定義されていない参照です test.c:(.text+0x1cc): `XCloseDisplay' に対する定義されていない参照です collect2: error: ld returned 1 exit status

該当のソースコード

C

1#include <X11/Xlib.h> 2#include <stdio.h> 3#include <stdlib.h> 4#include <string.h> 5 6int main() 7{ 8 Display *d; // 構造体のポインタ 9 int s; 10 Window w; 11 XEvent e; 12 13 /* サーバーとのコネクションを開く */ 14 d = XOpenDisplay( NULL ); 15 if( d == NULL ){ 16 printf( "Can't open display\n" ); 17 exit( -1 ); 18 } 19 20 s = DefaultScreen( d ); 21 22 /* ウィンドウ作成 */ 23 w = XCreateSimpleWindow( d, RootWindow( d, s ), 10, 10, 100, 100, 1, BlackPixel( d, s ), WhitePixel( d, s ) ); 24 /* 受け付けるイベントの種類を選択 */ 25 XSelectInput( d, w, ExposureMask | KeyPressMask ); 26 /* ウィンドウを可視化 */ 27 XMapWindow( d, w ); 28 29 /* イベントループ */ 30 while( 1 ){ 31 XNextEvent( d, &e ); 32 /* ウィンドウの描画と再描画 */ 33 if( e.type == Expose ){ 34 XFillRectangle( d, w, DefaultGC( d, s ), 20, 20, 10, 10 ); 35 XDrawString( d, w, DefaultGC( d, s ), 50, 50, "Hello World!", strlen( "Hello World!" ) ); 36 } 37 38 /* キーが押されたら終了 */ 39 if( e.type == KeyPress ) break; 40 } 41 42 /* サーバーとのコネクションを閉じる */ 43 XCloseDisplay( d ); 44 45 return 0; 46} 47

試したこと

/usr/include/X11にXlib.hがあることを確認
gccのオプションを調べて、パスが存在することも確認

補足情報(FW/ツールのバージョンなど)

gcc6.3.0
コンパイル時のコマンド(ここが違うとかこうしたらいいとかあったら教えてください)

cmd

1gcc -Wall test.c(ソースファイル名)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2018/12/01 09:31 編集

リンクエラーです。ライブラリの指定が出来ていません。回答に記述
guest

回答1

0

ベストアンサー

コンパイル時に、リンクするライブラリのパスを含めましょう。gcc -Wall test.c -lxxx←これ

うちの環境(Linux usr 4.15.0-39-generic #42~16.04.1-Ubuntu)だと、
usr/usr/lib/x86_64-linux-gnu # ll libX11*
lrwxrwxrwx 1 root 19 8月 30 22:56 libX11-xcb.so.1 -> libX11-xcb.so.1.0.0
-rw-r--r-- 1 root 5976 8月 30 22:56 libX11-xcb.so.1.0.0
-rw-r--r-- 1 root 2202946 8月 30 22:56 libX11.a・・・たぶんこれ
lrwxrwxrwx 1 root 15 8月 30 22:56 libX11.so -> libX11.so.6.3.0
lrwxrwxrwx 1 root 15 8月 30 22:56 libX11.so.6 -> libX11.so.6.3.0
-rw-r--r-- 1 root 1285616 8月 30 22:56 libX11.so.6.3.0
usr/usr/lib/x86_64-linux-gnu #

実行できましたよd^^
イメージ説明

投稿2018/12/01 09:29

編集2018/12/01 10:32
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukkuri

2018/12/01 10:16

X11/Xlib.h でもとの検索される/usr/include の X11 フォルダを検索、その中の Xlib.h が見つかるという認識だったのですが、違うということでしょうか。
cateye

2018/12/01 10:40 編集

ヘッダはいいのですが、ライブラリがリンクできていません。もし、ライブラリが無いようならapt install xorg-devでインストールして下さい。
yukkuri

2018/12/01 12:19

libX11.soが上のコマンドを打ったりしても見つかりませんでした。どうしたらいいでしょうか。
cateye

2018/12/01 12:37

ライブラリはlibX11.aです。xorg-devはちゃんとインストールできましたか? /usr/lib/x86_64-linux-gnu/libX11.aは有りますか?・・・環境が違えばライブラリの場所も違います。私の例はUbuntuです。(実際はLinux mint)
yukkuri

2018/12/02 00:04

usrフォルダやusr/libを検索しましたがだめでした。
yukkuri

2018/12/02 00:15

上に書いてありますとおり、Raspbianです。ベースはDebianですが、ネットによるとubuntuやDebianのコマンドを大半使えるようです。
yukkuri

2018/12/02 00:56

実行できました!ありがとうございました。
cateye

2018/12/02 00:59

おめv^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問