gnu compiler from the command line

gnu compiler from the command line

本文关键字:command line the from compiler gnu      更新时间:2023-10-16

我正在学习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语句必须更改为…
#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的开发人员非常友好,以-framework的形式包含了MAC特定的链接器选项。这些服务遵循了mac的传统,即他们喜欢如何以及在哪里存储图书馆。您可以通过用逗号分隔多个框架来将它们连接在一起。例如,只要我的源代码有,我也可以做框架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中一样用于传递头文件和源文件的备用搜索位置。