wiki.archlinux.jp/index.php/デスクトップ通 知#C
に記載されたサンプルソースを gcc に食わせると、リンカに undefined reference to `関数' と怒られる。なぜ?
Ubuntu 以外の環境では怒られない。
$ gcc -o hello_world `pkg-config --cflags --libs gio-2.0` hello_world.c
/usr/bin/ld: /tmp/ccB6DNA9.o: in function `main':
hello_world.c:(.text+0x1c): undefined reference to `g_application_new'
/usr/bin/ld: hello_world.c:(.text+0x36): undefined reference to `g_application_register'
<略>
collect2: error: ld returned 1 exit status
$ pkg-config --cflags --libs gio-2.0
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/libmount -I/usr/include/blkid -lgio-2.0 -lgobject-2.0 -lglib-2.0
$ # 関数の在処
$ objdump -T /lib/x86_64-linux-gnu/libgio-2.0.so.0 | grep g_application_new
00000000000e3d70 g DF .text 0000000000000071 Base g_application_new
$ # 既存コマンドは到達できる
$ ldd /usr/bin/gnome-keyring | grep gio
libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x000073c49a5e1000)
$ grep PRE os-release
PRETTY_NAME="Ubuntu 24.04.2 LTS"
【deb系】Ubuntu Linux 74【ディストリ】
236login:Penguin 警備員[Lv.3][新芽] (ワッチョイ ffa3-GFWC)
2025/04/27(日) 12:48:51.82ID:tn9oTxre0レスを投稿する
