2012-07-19 2 views
1

SDL을 사용하기 위해 잠시 동안 Sublime Text 및 Terminal로 C++를 배운 후 오늘 아침 OSX Lion 및 Xcode를 설치했지만 터미널에서 컴파일 할 때 몇 가지 문제가 있습니다. 여기 내 코드가있다. OSL 라이온의 터미널/g ++과의 SDL 연결 오류

#include "SDL/SDL.h" 

int main(int argc, char* args[]) 
{ 
    //Start SDL 
    SDL_Init(SDL_INIT_EVERYTHING); 

    //Quit SDL 
    SDL_Quit(); 

    return 0; 
} 

나는 내 라이브러리 폴더에 SDL.framework, SDL_mixer.framework 및 (STABLE) 라이트를 넣고 즉, 후자는 도움이되지 작동하지 않았을 때 SDL을 얻을 MacPorts를 사용했다.

'g ++ sdltest.cpp -o sdltest -lSDL'을 사용할 때 'ld : 라이브러리를 찾을 수 없습니다 -lSDLcollect2 : ld가 1 종료 상태를 반환했습니다.'라는 메시지가 나타납니다. 이 일을 할 수있는 방법이 있습니까?

내 하드 드라이브를 포맷하고 OSX Lion 및 XCode를 다시 설치 한 후 SDL을 '새로 설치'하는 경우에도 (가장 좋은 방법은 무엇입니까?) 그거 어때? 나는 내가 발견 한 모든 가이드를 가지고 오류가 발생했다. (필자는 그 문제가 분명히 이해할 만하다. 가장 이해하기 쉬운 것이 필요하다.) 많은 것들이 Xcode를 사용하는 것보다는 오히려 텍스트 편집기 및 터미널. 고맙습니다.

+0

은 INCLUDE 및 LIB 환경 변수. 또한 쉬운 디버깅/편집을 허용하는 Xcode를 사용하지 마십시오 – Mark

+0

내가 그랬다고 나는 생각하지 않습니다. 나는 Xcode를 사용하는 아이디어에 놀랐지 만, Sublime Text를 사용하는 것을 정말로 즐긴다. 그리고 Terminal 사용의 도전은 좋은 학습 경험이 될 것이라고 생각했다 - 문제가되는 것으로 입증되었다. 이 문제를 해결할 수 없다면 아마 Xcode를 사용해 볼 것입니다. – snarehanger

답변

0

당신은 g ++에게 -lSDL을 사용하여 libSDL을 링크하도록 말하고 있지만 어디서 볼 것인지 말하지는 않습니다. 명령 줄에 SDL 경로를 -L/Users/snarehanger/Library/SDL 또는 그 이상으로 추가하십시오.


죄송합니다. 나는 이것이 명확하지 않다는 것을 알지 못했기 때문에, 요아킴의 의견을 대답에 포함 시켰습니다.

  • 명령 줄 옵션은 민감한 경우입니다
  • (소문자 엘)이 라이브러리의 이름을 제공합니다 옵션 -l :이 파일 이름이나 검색 경로
    • 에 대한 중 하나를 지정하지 않습니다 예, -lSDL 중 하나 libSDL.a 또는 libSDL.so이 어디 명령 줄이나 기본값에 지정된 검색 경로에서의 gcc로 컴파일과 일치 할 수
    • gcc manual: link options
  • 옵션 -L (대문자 엘)의 예를
  • 을 위해 존재하는 경우 g ++가 /opt/local/lib/libSDL.so을 찾을 수 있도록 할 -l
    • 전체 명령 줄 g++ sdltest.cpp -o sdltest -L/opt/local/lib -lSDL에 요청 라이브러리를 찾을 때 사용되는 검색 경로에 디렉토리를 추가합니다
    • gcc manual: directory options
+1

Macports -L/opt/local/lib o를 사용하는 경우에도 – Mark

+0

g ++ sdltest.cpp -o sdltest -l/cd/library/frameworks/sdl.framework/SDL 그 변형을 시도해 보았습니다. 시도한 마크 제안, 나는 그것을 찾을 수없는 동일한 오류가 계속 발생합니다. SDL을 다시 설치해야합니까? – snarehanger

+1

@snarehanger'-l'과'-L'의 차이점에 유의하십시오 : 후자는 대문자 L을 사용하지만 후자는 사용하지 않습니다. '-l'은 링크 할 링커에게 _what_ 라이브러리가 링크되도록 지시하고,'-L' _은 _ 찾을 수 있습니다. 예를 들어 _both_를 사용해야합니다. 'g ++ sdltest.cpp -o sdltest -L/opt/local/lib -lSDL'. –

2
당신은 당신을 생성하는 파일 (SDL2 또는 sdl2-설정)에 포함 된 SDL-설정을 사용해야합니다

g ++에 대한 include 및 library 매개 변수

g++ sdltest.cpp -o sdltest `sdl2-config --cflags` `sdl2-config --lib` 

로 변환 및 실행 : 예를 들어, 나는 이것이, OSX에 브루 통해 SDL2을 사용하고 있기 때문에

g++ sdltest.cpp -o sdltest -I/usr/local/include/SDL2 -D_THREAD_SAFE -L/usr/local/lib -lSDL2 

는 SDL 1과 동일한 작동합니다.X와 SDL-설정, 그리고 광산에 그 제공, 추가로 "--static-libs와"옵션이있다 : 당신은 당신이 변경 않았다 당신의 MacPorts의 환경을 설정

-L/usr/local/lib -lSDL2 -lm -liconv -Wl,-framework,OpenGL -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit