2013-12-12 175 views
0

我正在学习C++,我从命令行编译。当试图添加第三方库时,我遇到了一个问题。我无法找出链接器系统。有谁知道一个很好的教程或类似的东西?gnu从命令行编译

例如,我想玩SDL2库,并使用像这样的命令。

c++ -I/Library/Frameworks/SDL2.framework/Headers -L/Library/Frameworks/SDL2.framework/ -lSDL2 helloworld.cpp 

,我得到的错误LD:库找不到-lSDL2

+0

[Linker order -GCC](http://stackoverflow.com/questions/45135/linker-order-gcc) –

+0

的可能重复不确定它是否重复,因为这不是报告的问题,除非你从示例中可以看出,这实际上是问题,如果是这样,您可以通过指出来帮助用户,然后也许他们可以删除他们的问题。 – mydoghasworms

+0

他的问题是特定于多个链接库的顺序,只是试图使用一个库。 – citizen2191629

回答

0

我找到了答案。以下命令正确编译。包含声明必须更改为...

#include<SDL2/SDL.h> 
and the correct compile command is... 
c++ -o helloworld helloWorld.cpp -framework SDL2 

我也可以使用g ++。在我的系统上,C++和g ++都是同一个gnu编译器的符号链接,它恰好是我在系统上安装的最新版本。

选项-L是unix链接器选项,不适用于MAC。 GCC的开发人员非常友好,能够以框架形式包含MAC特定的链接器选项。这些服务将遵循MAC如何以及他们喜欢存储图书馆的传统。你可以用逗号分隔几个框架。因此,例如,我可以做也只要-framework SDL2,SDL2_mixer作为源具有

#include<SDL2_mixer/SDL_mixer.h> 

当编译图书馆这个默认的搜索位置/库/框架。 include语句是跨平台compatable和MAC GNU链接都知道,如果我说

#include<SDL2/SDL.h> 

是该头将在/Library/Frameworks/SDL2.framework/Headers

的-ipath选项仍然发现在mac上工作,并可用于传递标题和源文件的替代搜索位置,就像它在unix中工作一样。

1

你需要把最后上线的链接标志:

g++ -I/Library/Frameworks/SDL2.framework/Headers helloworld.cpp -L/Library/Frameworks/SDL2.framework/ -lSDL2