繁体   English   中英

命令行中的gnu编译器

[英]gnu compiler from the command line

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

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

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

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

您需要将链接标志放在行的最后:

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

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

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

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

选项-L是UNIX链接器选项,不适用于MAC。 GCC的开发人员非常友好,可以以-framework的形式包含MAC特定的链接器选项。 这些遵循了Mac如何存储库的方式以及存储库的传统。 您可以使用逗号将多个框架链接在一起。 所以例如我也可以做-framework SDL2,SDL2_mixer

#include<SDL2_mixer/SDL_mixer.h> 

编译该库的默认搜索位置是/ Library / Frameworks。 include语句是跨平台兼容的,mac gnu链接器知道如果我说

#include<SDL2/SDL.h> 

该标头将在/Library/Frameworks/SDL2.framework/Headers中找到

-IPATH选项在Mac上仍然可以使用,可以像在UNIX中一样使用,用于传递标题和源文件的备用搜索位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM