2011-12-08 89 views
3

我最近從源代碼編譯Allegro-5.0(遵循wiki的說明)。在這個過程中我沒有遇到任何錯誤,所以我認爲它很好。不過,我得到了鏈接錯誤,甚至最起碼的測試程序:Allegro 5.0 - 爲什麼我收到鏈接錯誤?

//test.cpp 
#include <allegro5/allegro.h> 

int main() 
{ 
    al_init(); 
    return 0; 
} 

我與

g++ `pkg-config --libs allegro-5.0` test.cpp -o test 

編譯但我總是得到

/tmp/ccVmmERa.o: In function `main': 
test.cpp:(.text+0xf): undefined reference to `al_install_system' 
collect2: error: ld returned 1 exit status 

(pkg配置的回報 - L/usr/local/lib -lallegro,似乎沒有什麼問題)

另外,我可以編譯使用給定的makefile的例子很好,所以庫似乎沒有任何問題。我只是試着做makefile的工作,但我完全不理解它(我幾乎不能寫我自己的簡單的)。

哦,我使用的是Ubuntu 11.10和gcc 4.7,但我認爲這與它沒有任何關係。

所以 - 爲什麼會發生這種情況,我該如何解決?

回答

5

最後把命令行庫:

g++ test.cpp -o test `pkg-config --libs allegro-5.0` 

鏈接時,該文件和庫文件的順序關係。

+0

謝謝。我現在覺得自己是個笨蛋,但至少可以工作。 – Cubic

+0

ME TOO !!!!!!!!!編號爲 – HoNgOuRu

+0

Thx。以防萬一任何人有相同的概率,我還必須添加LD_LIBRARY_PATH = /路徑/到/ allegro/lib ./prog,否則我會得到「加載共享庫時出現錯誤:liballegro.so.5.0:無法打開共享目標文件:沒有這樣的文件或目錄「 – justin