g_utf8_collate() 在 Ubuntu 20.04.3 (LTS) 的 GLib-2.0 中找不到
g_utf8_collate() not found in GLib-2.0 on Ubuntu 20.04.3 (LTS)
我已经安装在我的 Ubuntu:
sudo apt-get install libglib2.0-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libglib2.0-dev-bin
但是这个小测试代码无法link:
cat -n test.c
1 #include <stdio.h>
2 #include <glib.h>
3
4 int main()
5 {
6 char *p1 = "foo";
7 char *p2 = "bar";
8 int rc = 0;
9
10 rc = g_utf8_collate(p1, p2);
11 printf("g_utf8_collate(p1, p2) = %d\n", rc);
12 }
cc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lm -L/usr/lib/x86_64-linux-gnu -lglib-2.0 test.c
/usr/bin/ld: /tmp/cc583STn.o: in function `main':
test.c:(.text+0x38): undefined reference to `g_utf8_collate'
collect2: error: ld returned 1 exit status
在我的所有其他系统(SuSE Linux、FreeBSD)上它 links 文件,与其他 -I
和 -L
目录一起使用。
尝试
cc $(pkg-config --cflags --libs glib-2.0) test.c
pkg-config
的存在是为了为依赖项提供正确的编译器和链接器标志,这样您就不必手动指定它们。
我了解到源文件的顺序和链接器选项很重要。它像这样工作得很好:
cc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include test.c -lm -L/usr/lib/x86_64-linux-gnu -lglib-2.0
我已经安装在我的 Ubuntu:
sudo apt-get install libglib2.0-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libglib2.0-dev-bin
但是这个小测试代码无法link:
cat -n test.c
1 #include <stdio.h>
2 #include <glib.h>
3
4 int main()
5 {
6 char *p1 = "foo";
7 char *p2 = "bar";
8 int rc = 0;
9
10 rc = g_utf8_collate(p1, p2);
11 printf("g_utf8_collate(p1, p2) = %d\n", rc);
12 }
cc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lm -L/usr/lib/x86_64-linux-gnu -lglib-2.0 test.c
/usr/bin/ld: /tmp/cc583STn.o: in function `main':
test.c:(.text+0x38): undefined reference to `g_utf8_collate'
collect2: error: ld returned 1 exit status
在我的所有其他系统(SuSE Linux、FreeBSD)上它 links 文件,与其他 -I
和 -L
目录一起使用。
尝试
cc $(pkg-config --cflags --libs glib-2.0) test.c
pkg-config
的存在是为了为依赖项提供正确的编译器和链接器标志,这样您就不必手动指定它们。
我了解到源文件的顺序和链接器选项很重要。它像这样工作得很好:
cc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include test.c -lm -L/usr/lib/x86_64-linux-gnu -lglib-2.0