2011-03-07 75 views
2

我想今天安裝快板庫。我在C++方面有相同的經驗,但似乎我沒有這樣的東西。我從源代碼編譯了Allegro 5.0並將其放在/usr/lib/gcc/i486-linux-gnu/4.4/include/allegro5中。但是,當我嘗試編譯我的代碼,這樣出現:Allegro在Ubuntu的:未定義的引用`al_install_system」

> g++ test2.cc -o test2 
/home/chris/Desktop/c++/test2/.objs/main.o||In function `main':| 
main.cpp:(.text+0x22)||undefined reference to `al_install_system'| 
main.cpp:(.text+0x3e)||undefined reference to `al_create_display'| 
main.cpp:(.text+0x6b)||undefined reference to `al_map_rgb'| 
main.cpp:(.text+0x8e)||undefined reference to `al_clear_to_color'| 
main.cpp:(.text+0x93)||undefined reference to `al_flip_display'| 
main.cpp:(.text+0xa1)||undefined reference to `al_rest'| 
main.cpp:(.text+0xa9)||undefined reference to `al_destroy_display'| 
||=== Build finished: 7 errors, 0 warnings ===| 

的代碼我使用:

#include <stdio.h> 
#include <allegro5/allegro.h> 

int main(int argc, char **argv) 
{ 
    ALLEGRO_DISPLAY *display = NULL; 

    if(!al_init()) { 
     fprintf(stderr, "failed to initialize allegro!\n"); 
     return -1; 
    } 

    display = al_create_display(640, 480); 
    if(!display) { 
     fprintf(stderr, "failed to create display!\n"); 
     return -1; 
    } 

    al_clear_to_color(al_map_rgb(0,0,0)); 
    al_flip_display(); 
    al_rest(10.0); 
    al_destroy_display(display); 
    return 0; 
} 

allegro-config --libs回報什麼。我首先將Allegro作爲包裝,但它也不起作用。

+0

/usr/lib/gcc/i486-linux-gnu/4.4/include/allegro5不把正確的地方庫的包含文件。 – milan 2011-03-09 08:53:58

+0

可能重複的[編譯的C++代碼與快板5和g ++](http://stackoverflow.com/questions/6377204/compiling-c-code-with-allegro-5-and-g) – karlphillip 2011-06-16 20:22:20

回答

1

您需要用快板庫鏈接,但你似乎並沒有這樣做。

allegro-config --libs什麼也沒有返回。

有你的問題的一部分。通常情況下,你應該能夠將其添加到您的命令行,像這樣:

g++ `allegro-config --libs` test2.cc -o test2 

在我的系統(Ubuntu的10.10),它給了這一點:

$ allegro-config --libs 
-L/usr/lib -Wl,-Bsymbolic-functions -lalleg-4.2.2 

你調用正確的allegro-config?也許你應該指定它的完整路徑?

+0

正如我說,我沒有通過軟件包安裝Allegro,而是從源代碼編譯它。當我安裝了軟件包時,它會返回上面發佈的內容。我應該嘗試刪除Allegro5並重新安裝軟件包還是不會改變? – Suyooo 2011-03-07 17:04:23

+0

我重複上面的兩個問題。 – Thomas 2011-03-07 17:05:25

+0

沒有我的意思是沒有安裝,對不起,如果不清楚。我嘗試重新安裝軟件包(liballegro-4.2,liballegro-4.2-dev)。現在該命令的輸出與Ubuntu上的相同,並且調用右側仍然會導致與OP中相同的輸出。 – Suyooo 2011-03-07 17:14:51

20

快板5使用pkg配置。

gcc foo.c -o foo $(pkg-config --libs allegro-5.0) 

您還需要指定使用的插件庫:

gcc foo.c -o foo $(pkg-config --libs allegro-5.0 allegro_image-5.0) 
+0

+1遠比我的回答更好:) – Thomas 2011-03-09 08:08:12

+0

運行'pkg-config --list-all | grep allegro',我意識到我不得不省略命令爲我工作的零點:'gcc allegro_play.c -o play $(pkg-config --libs allegro-5)' – HappyCoder86 2015-11-06 20:29:01