【发布时间】:2015-09-11 01:31:40
【问题描述】:
我有以下脚本:
gcc -I /Library/Frameworks/SDL2.framework/Headers \
-F /Library/Frameworks/ -framework SDL2 test.c
成功编译以下源代码:
#include <SDL.h>
//#include "SDL_image.h"
int init();
int loadMedia();
void close();
SDL_Window* gWindow = NULL;
SDL_Surface* gScreenSurface = NULL;
SDL_Surface* gHelloWorld = NULL;
int init()
{
int success = 1;
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
}
}
int main(int argc, char* args[])
{
return 0;
}
我的问题是如何使用添加的库 SDL_image 编译它?会是这样吗?
gcc -I /Library/Frameworks/SDL2.framework/Headers \
-I /Library/Frameworks/SDL_image.framework/Headers \
-F /Library/Frameworks/ -framework SDL2 test.c
当我尝试这个时,我得到以下错误:
In file included from test.c:2:
/Library/Frameworks/SDL_image.framework/Headers/SDL_image.h:27:10: fatal error:
'SDL/SDL.h' file not found
`#include <SDL/SDL.h>`
【问题讨论】:
-
有趣的是,您的“脚本”看起来与 C 源代码一模一样。还是您的意思是隐藏在文本中的命令?
-
我怀疑您是否真的想将 gcc 与一些不相关的库链接。但是,如果您想将应用程序与库链接并想知道如何告诉 gcc 这样做:(这是在所有源文件干净编译之后)`gcc
- -o -L -l(小写“L”)短库名。注意:当完整的库名称为“libmath.so”时,短库名称将是“math”,以获取短库名称:。删除前导 'lib' 和 '.' 中的所有内容向前
-
感谢您的快速回复。致奥拉夫:我说的是隐藏在文本中的命令。该命令位于脚本文件中。我只是发现执行这个文件更容易,而不是在命令行上全部输入。
-
致 user3629249:我尝试以下命令:“gcc test.c -o a.out -L /Library/Frameworks -l SDL2”和“gcc test.c -o a.out -L /Library/Frameworks -l SDL2.framework”并且不起作用。也许我做错了?感谢您的快速回复。
-
为什么要在包含列表中显式添加框架头目录?