2013-07-02 26 views
0

我想在我使用的Codeblocks中使用glib解析配置文件。所以我想先做一下here的例子。我有一個名爲myconfig.cfg的文件和一個代碼programming.c。我只是複製並粘貼代碼來查看glib是否工作,但不幸的是它不起作用。我做glib2.0的安裝使用sudo apt-get的,我發現那裏正在使用未定義的引用'glib'

pkg-config --cflags --libs glib-2.0 

,並在這條道路

project->Build Options->Compiler Settings-> Other Options 

我加

-I/usr/include/glib-2.0 -I/usr/lib/arm-linuxgnuebihf/glib-2.0/include 

在glibs的庫當我建立並運行編程時,我有這些錯誤

-------------- Build: Debug in programming --------------- 
gcc -Wall -g -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -std=c99 -c /home/pi/Desktop/programming/main.c -o obj/Debug/main.o 
g++ -o bin/Debug/programming obj/Debug/main.o /usr/lib/libmysqlclient.so.16 
obj/Debug/main.o: In function `main': 
/home/pi/Desktop/programming/main.c:22: undefined reference to `g_key_file_new' 
/home/pi/Desktop/programming/main.c:26: undefined reference to `g_key_file_load_from_file' 
/home/pi/Desktop/programming/main.c:28: undefined reference to `g_log' 
/home/pi/Desktop/programming/main.c:34: undefined reference to `g_slice_alloc' 
/home/pi/Desktop/programming/main.c:37: undefined reference to `g_key_file_get_string' 
/home/pi/Desktop/programming/main.c:39: undefined reference to `g_key_file_get_locale_string' 

/home/pi/Desktop/programming/main.c:41: undefined reference to `g_key_file_get_boolean_list' 
/home/pi/Desktop/programming/main.c:43: undefined reference to `g_key_file_get_integer_list' 
/home/pi/Desktop/programming/main.c:45: undefined reference to `g_key_file_get_string_list' 
/home/pi/Desktop/programming/main.c:47: undefined reference to `g_key_file_get_integer' 
/home/pi/Desktop/programming/main.c:49: undefined reference to `g_key_file_get_double_list' 
collect2: ld returned 1 exit status 
Process terminated with status 1 (0 minutes, 6 seconds) 
11 errors, 0 warnings 

我錯過了什麼嗎?我也試着用libconfig做同樣的事情,但是我又有了未定義的參考。問題是路徑嗎?

UPDATE

隨着pkg配置的使用--libs油嘴-2.0,它返回我-lglib-2.0

在碼塊我

project->Build Options->Linker Settings-> Link Libraries 
插入它(lglib-2.0)

,現在我有這樣的錯誤:

**(process:3751): ERROR ** No such file or directory 
Trace/breakpoint trap 
+0

您錯過了'-',您應該添加'-lglib-2.0'。對於鏈接器設置,使用'''pkg-config --cflags glib-2.0''編譯器設置選項和'''pkg-config --libs glib-2.0 \'''可能會更好一些(請注意' \''在開始和結束時)。 Code :: Blocks還允許通過瀏覽並在鏈接器設置中選擇它們(btw使用哪個版本的Code :: Blocks) –

回答

0

你沒有鏈接到庫,這就是爲什麼你得到鏈接器錯誤(「未定義的參考」)。

檢查的pkg-config --libs glib-2.0輸出,沒有--cflags,並確保它在您的項目設置納入莫名其妙。

+0

沒有cflags的pkg-config返回我-lglib-2.0 – dali1985

+0

@ dali1985沒錯,那就是編譯器國旗需要問它鏈接到圖書館。你需要告訴Codeblocks包含相同的內容。 – unwind

+0

我現在做了(也許是錯誤的),正如你可以在我的更新中看到我有新的錯誤! – dali1985