2017-05-12 21 views
0

私はMacBookでSDLライブラリを動作させようとしています。 私はhttps://wiki.libsdl.org/InstallationでSDLのインストール手順を読み、それに従っています。コマンドを使用してCはsdl.hと一緒にコンパイルされません。

#include <SDL2/SDL.h> 
#include <stdio.h> 
int main() 
{ 
    SDL_Init(SDL_INIT_VIDEO); 
    printf("Window Initialization!\n"); 
    SDL_Window *window; 
    //printf("SDL_WINDOWPOS_CENTERED is %d\n", SDL_WINDOWPOS_CENTERED); 
    window = SDL_CreateWindow(
          "SDL2 Test", 
           SDL_WINDOWPOS_CENTERED, 
           SDL_WINDOWPOS_CENTERED, 
           640, 480, 0); 
    if(window == NULL){ 
     printf("Creation of Window Failed\n"); 
     SDL_Quit(); 
     return -1; 
    } 
    SDL_Delay(3000); //delay for 3000 ms 
    SDL_Renderer* rend = NULL; 
    SDL_DestroyWindow(window); 
    SDL_Quit(); 
    return 0; 
} 

gcc main.c -o run 

次のエラーが印刷されている:

Undefined symbols for architecture x86_64: 
"_SDL_CreateWindow", referenced from: 
    _main in sdl1-a80c27.o 
"_SDL_Delay", referenced from: 
    _main in sdl1-a80c27.o 
"_SDL_DestroyWindow", referenced from: 
    _main in sdl1-a80c27.o 
"_SDL_Init", referenced from: 
    _main in sdl1-a80c27.o 
"_SDL_Quit", referenced from: 
    _main in sdl1-a80c27.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

私はなかったので、私は、次のCコードをコンパイルしようとしたときしかし、

makeとsudoをインストールすると、Webサイトによると、SDLは現在 "普遍的な"ものでなければなりません。だから私はリンカーは必要ないと思う。しかし、それは明らかにそうではありません。

私はまた、/ Library/Frameworksにフレームワークファイルを追加しようとしました。そして、私がした場合:

gcc sdl1.c -o run -F/Library/Frameworks/SDL2.framework/Headers -framework SDL2 

コードがコンパイルされることがあります。しかし、時にはSDL2_image.hも含めて、別の-F /.../を追加するとうまくいきません。

私は本当に提案/アドバイスをいただきありがとうございます。ありがとう!

+1

おそらく '-lSDL'でコンパイルする必要があります。 – immibis

+0

フラグを取得するには 'sdl2-config --cflags --libs' –

答えて

5

ドキュメントから

gcc sdl1.c -o run `sdl2-config --cflags --libs` 

SDLはちょうどそれがあなたのビルドシステムを維持するための最良の方法ですが、それを使用し、あなたのためのすべてのフラグを生成するツールが付属しています。

関連する問題