2013-03-10 66 views
1

我有一個非常簡單的C程序,它是taken from the SDL documentation鏈接到的SDL從C程序

#include <stdlib.h> 
#include "SDL.h" 

int main() { 
    if (SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0) { 
     return EXIT_FAILURE; 
    } 
    atexit(SDL_Quit); 
    return EXIT_SUCCESS; 
} 

我使用sdl-config --cflags --libs提供參數鏗鏘。它能夠針對SDL標題鏈接,但無法對SDL庫鏈接:

/tmp/example-f2Tgg6.o: In function `main': 
example.c:7: undefined reference to `SDL_Init' 
example.c:8: undefined reference to `SDL_Quit' 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我試圖編譯使用gcc,並得到了同樣的問題,所以我覺得我已經錯過了一些東西明顯。如果相關,我正在運行xubuntu 11.10。

+0

它找不到庫 - > SDL.lib和sdlmain.lib – 2013-03-10 19:24:37

+0

我應該在哪裏尋找SDL.lib和sdlmain.lib?那些與.a'文件等同的Windows?因爲我相當肯定'ld'正在找到SDL庫,因爲如果我將-lSDL更改爲-lrubbish,則會得到'/ usr/bin/ld:找不到-lrubbish'。 – hertzsprung 2013-03-10 19:27:30

+0

將SDL.dlls置於可執行文件夾和SDL.libs中,告訴你的IDE /編譯器應該放在哪裏。 – 2013-03-10 19:39:31

回答

0

嘗試安裝庫。像sudo apt-get install libsdl1.2-dev libsdl1.2debian

+0

我已經有這些。而且,就像我在上面的評論中所說的那樣,我很確定'ld'正在找到SDL庫。 – hertzsprung 2013-03-10 19:46:55

+1

也許這個鏈接可能是有用的:http://stackoverflow.com/questions/8498899/ubuntu-11-10-gcc-g-wont-link-libraries – 2013-03-10 19:54:14

+0

好吧,修復它,謝謝。 – hertzsprung 2013-03-10 20:01:00

0

首先,您總是可以使用pkg-config找出正確的標誌,如here所示。

然後你可以使用apt-file和谷歌找出你需要通過apt安裝了哪些軟件包。在這種情況下,請查看libsdl-* - 您可能需要基本軟件包和-dev軟件包。

+0

「pkg-config」示例的鏈接現在已被破壞。如果您可以在答案的正文中包含示例,這將會很有幫助。 =] – Andrew 2013-10-14 18:25:35

+0

下面介紹如何使用pkg-config在Mac上編譯SDL 2.0:'gcc example.c $(pkg-config --cflags --libs sdl2)' – Andrew 2013-10-14 19:19:03