首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用SDL2的C程序不能用clang编译

SDL2是一款跨平台的多媒体开发库,它提供了丰富的功能和接口,方便开发者进行游戏开发、图形渲染、音视频处理等任务。C语言是SDL2的主要开发语言,而clang是一种编译器,常用于编译C语言程序。

然而,使用SDL2的C程序确实不能直接使用clang编译。这是因为SDL2库本身是使用C语言编写的,而clang编译器默认使用C++语言进行编译。因此,如果直接使用clang编译SDL2的C程序,会导致编译错误。

为了解决这个问题,我们可以使用以下方法来编译SDL2的C程序:

  1. 使用gcc编译器:gcc是一种常用的C语言编译器,可以直接编译SDL2的C程序。可以使用以下命令进行编译:
  2. 使用gcc编译器:gcc是一种常用的C语言编译器,可以直接编译SDL2的C程序。可以使用以下命令进行编译:
  3. 其中,output_file是编译生成的可执行文件名,source_file.c是源代码文件名,-lSDL2参数用于链接SDL2库。
  4. 使用clang编译器,并指定C语言模式:可以使用以下命令来编译SDL2的C程序:
  5. 使用clang编译器,并指定C语言模式:可以使用以下命令来编译SDL2的C程序:
  6. 通过添加-x c参数,可以告诉clang编译器使用C语言模式进行编译。

需要注意的是,以上方法仅适用于SDL2的C程序。如果程序中使用了C++特性或SDL2的C++接口,那么需要使用C++编译器进行编译。

总结起来,SDL2的C程序不能直接使用clang编译,可以使用gcc编译器或者使用clang编译器并指定C语言模式来编译。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Clang编译C程序在安卓设备中执行

由于Android NDK从r18开始就已经抛弃GCC,转而将Clang当作默认编译器,因此我们直接使用NDK工具包进行编译 实验环境 安卓模拟器 android-ndk-r19c 实验步骤 第一步 源码编写...\n"); return 0; } 第二步 源码编译 在android-ndk-r19c目录下toolchains文件夹中llvm文件夹即为clang编译工具包 在llvm子目录bin...下存放这针对各个架构clang编译器,由于模拟器是ARM架构,这里我们使用armv7a-linux-androideabi23-clang 在命令窗口执行如下指令: armv7a-linux-androideabi23...-clang test.c -o test 由于clang已经指定了Android23版本SDK,这里无需要像GCC那样指定-static编译 第三步 将编译可执行文件传至安卓设备 adb push.../test 如果提示权限拒绝,那么 chmod 777 test 附加 如果C语言和汇编语言混合开发,同样也可使用clang编译: armv7a-linux-androideabi23-clang aaa.s

2.9K20

linux下使用gcc编译运行C程序

gcc(GNU Compiler Collection)是Linux下最常用C语言编译器,是GNU项目中符合ANSI C标准编译系统,能够编译CC++和Object C等语言编写程序。 ...在linux系统中,常见使用方法有两种,如下: gcc -o out in1 in2 //gcc编译以及链接(对in1文件和in2文件进行编译生成...out.bin文件,“-o”:表示生成可执行文件) gcc -c out in1 in2 // gcc编译链接(对in1文件和in2文件文件进行编译生成...out in1 in2 // gcc编译链接(对in1文件和in2文件文件进行编译生成out.o文件,“-c”:表示只生成*.o文件)...以编译两个程序a.c和hello.c为示例: vi a.c                                 //编辑a.c , 它将被hello.c调用,前提是这两个文件必须在同一目录下

6.1K70
  • linux下使用gcc编译运行C程序

    gcc(GNU Compiler Collection)是Linux下最常用C语言编译器,是GNU项目中符合ANSI C标准编译系统,能够编译CC++和Object C等语言编写程序。 ...在linux系统中,常见使用方法有两种,如下: gcc -o out in1 in2 //gcc编译以及链接(对in1文件和in2文件进行编译生成...out.bin文件,“-o”:表示生成可执行文件) gcc -c out in1 in2 // gcc编译链接(对in1文件和in2文件文件进行编译生成...out in1 in2 // gcc编译链接(对in1文件和in2文件文件进行编译生成out.o文件,“-c”:表示只生成*.o文件)...以编译两个程序a.c和hello.c为示例: vi a.c                                 //编辑a.c , 它将被hello.c调用,前提是这两个文件必须在同一目录下

    7.4K90

    使用mingw-w64编译C程序

    标签:脑力修炼,C语言,mingw-w64编译器 在安装并配置好mingw-w64编译器(详见:MinGW-w64编译器安装成功过程记录)后,就可以使用其来编译C程序了。...可以使用任何文本编辑工具编写C程序代码,例如记事本,编写一段示例代码: #include int main() { printf("hi,excelperfect....图2 输入命令: gcc test.c 并回车,程序开始编译,如下图3所示。...图3 编译后,可以在与该文件相同目录(本示例即D:\mingw64\mytest)下生成一个名为a.exe可执行文件。 如果在编译时没有指定生成程序名,编译器默认将其命名为a.exe。...此时,在命令提示符中,输入a,就会执行程序,如下图4所示。 图4 如果想在编译时生成自已指定文件名,则要使用“-o”选项,即: gcc test.c -0 test 如下图5所示。 图5

    53610

    CentOS7.3使用CMake编译安装最新LLVM和Clang4.0.1

    前段时间试了把虚拟机CentOS下面的C/C++工程中Makefile文件改用clang/clang++来编译,这篇文章主要是介绍如何在CentOS7.3系统编译安装最新LLVM和Clang4.0.1...关于GCC、LLVM和Clang关系可以参考《这篇文章》,个人理解如下: LLVM 是 Low Level Virtual Machine 简称,这个库提供了与编译器相关支持,能够进行程序语言编译期优化...当然,也可以每次在用clang/clang++编译程序时候指定--stdlib=libc++。...前两者是gcc/g++编译C/C++默认链接库文件,libc+++是clang需要链接库文件。 5 开始通过make命令编译 使用make -j2命令进行编译。...11 使用clang++编译c++程序 clang/clang++目前是兼容gcc/g++,所以二者编译命令基本一致。

    57710

    C语言】程序编译、预处理

    3.链接器同时也会引入标准C函数库中任何被该程序所用到函数,而且它可以搜索程序员个人程序库,将其需要函数也链接到程序中。...而源程序通过编译和链接最终形成可执行程序,但是编译本身也分为几个阶段:预编译/预处理——编译——汇编 预处理 选项 gcc -E test.c -o test.i 预处理完成之后就停下来,预处理之后产生结果都放在...这个时候程序使用一个运行时堆栈(stack),存储函数局部变量和返回地址。程序同时也可以使用静态(static)内存,存储于静态内存中变量在程序整个执行过程一直保留他们值。 终止程序。...3.嵌套文件包含 如果出现这样场景 comm.h和comm.c是公共模块。 test1.h和test1.c使用了公共模块。 test2.h和test2.c使用了公共模块。...test.h和test.c使用了test1模块和test2模块。 这样最终程序中就会出现两份comm.h内容。这样就造成了文件内容重复。

    26520

    推荐几款可以直接在手机上编程app(包含Java、C、Python等)

    二.C语言编译器:这是一个很小巧c编译器,大概13兆左右,界面简洁、朴素,使用起来很简单,下面我介绍一下这个app安装和简单使用: 1.下载安装,这里以我vivo手机为例,直接打开“应用商店”,搜索...三.C4droid是一款C/C++程序集成开发环境,默认使用tcc为编译器,可以选择安装gcc插件(需要root) 选用gcc后,可以用sdl(简单直控媒体层库,需安装sdl plugin...贴吧已发布5.98版本,英文版及汉化版本,默认使用g++编译器,sdl及gcc插件也有相应更新,还可以拓展sdl2插件。...,我只能用“神器”来说明这个软件,这是一款来自国外终端模拟器,功能非常强大。...clang 大名鼎鼎c++ 编译器,用来编译cc++程序 3.apt install vim termux自带vi,如果想使用vim(毕竟神之编辑器),则必须安装,且默认安装vim 8.0 版本,

    9.2K10

    Python 程序编译:Pyinstaller库使用

    本文内容:Python 程序编译:Pyinstaller库使用 ---- Python 程序编译:Pyinstaller库使用 1.Pyinstaller库简介 2.Pyinstaller库常用命令...选项 描述 -h,–help 查看该模块帮助信息 -F,-onefile 产生单个可执行文件 -D,–onedir 产生一个目录(包含多个文件)作为可执行程序 -a,–ascii 包含 Unicode...字符集支持 -d,–debug 产生 debug 版本可执行文件 -w,–windowed,–noconsole 指定程序运行时不显示命令行窗口(仅对 Windows 有效) -c,–nowindowed...---- 3.程序编译实例 这里我们选择之前海龟绘图中绘制小樱花树程序案例进行演示。...命令: 回车,待命令执行完毕: 在刚刚文件夹中,我们就能看到多出来很多东西: 这里我们使用了-F选项,也就是编译成单个可执行文件,在生成dist文件夹中.exe文件就是我们要可执行文件了

    1.5K20

    C++程序编译之谜(一)——多文件编译奇怪现象

    1、奇怪现象 在C++多文件编译时候,很多人都会经常碰见这样一种情况,在一个cpp文件中调用另一个cpp文件函数,那么可以直接调用吗?我们来做个试验。...首先我们要明白一下,像C/C++、java等高级语言编译生成可执行文件是要经历预处理、编译、汇编、链接这几个过程,像以上三个文件,头文件仅仅只参与到预处理过程,将cal.h内容包含到另外两个cpp文件中...但是这个还没完,要生成可执行文件,还要将以上cpp文件生成二进制文件进行链接起来,并且有个文件中还要提供一个main函数入口,因为C++语言可执行文件入口是main函数,不提供的话程序无法运行。...如果在Linux平台上要清楚展现,就是以下这几个语句: gcc -c main.cpp //会生成main.o文件 gcc -c add.cpp //会生成add.o文件 gcc main.o...3、新疑团 那么可能有些人这时候会提出一个疑问,如果我只想提供add()这个函数接口,而我不想把函数具体实现也提供出来,像在网络上如果应用第三方库时候,别人希望把他们源码提供出来,但是又想提供这个接口给调用者调用

    21810

    C程序编译链接预处理详解(C语言内功,精炼,基础)

    前言:大家好,这里是YY;此篇博客主要是程序编译/链接/预处理详解知识点;包含【程序翻译环境和执行环境】【编译和链接过程】【编译几个阶段】【运行环境】【预定义符号】【define/undef...一.程序翻译环境和执行环境 在ANSI C任何一种实现中,存在两个不同环境 翻译环境,此过程中源代码转换为可执行机器指令 执行环境,它用于实际执行代码 二.编译和链接过程 三.编译几个阶段...程序执行便开始,接着调用main函数 开始执行程序代码,这个时候程序使用一个运行堆栈,存储函数局部变量和返回值。...程序同时也可以用静态内存,存储在静态内存中变量在程序整个执行过程中一直保留它们值 五.预定义符号 __FILE__ //进行编译源文件 __LINE__ //文件当前行号...__DATE__ //文件被编译日期 __TIME__ //文件被编译时间 __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义 六.define/undef

    16710

    CC++编译工具基本使用方法

    而GCC下面有两个比较常用工具就是gcc(GUN C Compiler)和g++(GUN C++ Compiler),即c语言编译器和c++编译器。我通常用gcc编译c代码,用g++编译c++代码。...实际上可以用直接用g++编译c或者c++代码。本次我们介绍怎样使用g++。 写C/C++代码工具建议使用 Sublime Text 或者 VSCode,我自己更喜欢 Sublime Text。...G++重要编译参数 (1)编译带调试信息可执行文件 # -g 选项告诉GCC产生能被 GNU 调试器DGB使用调试信息,以调试程序 # 产生带调试信息可执行文件terst g++ -g test.cpp...我们可以使用再次使用 time 命令计算执行程序所需时间,可以看到明显时间区别,如下结果 pan@pan-PC:~/Work/src/cmake/src$ time ....从而提高最终程序执行效率。

    1.2K10

    程序源代码】《金庸群侠传》C++复刻版

    关键字:《金庸群侠传》C++复刻版 这是一个以SDL2为基础实现2D游戏框架,同时相当于提供了一个使用该框架制作DOS游戏《金庸群侠传》移植版范例。...Windows下可以使用Visual Studio编译,其他系统下可以在src目录使用CMake生成Makefile,使用GCC或Clang编译,需至少支持C++14。...3、run过程参数为一个布尔值,如果为true则会被加入到root并进行绘制,如果为false则只运行参与绘制。...三:视频 这是作者编写一个视频播放器,可以将其编译为动态库,作为SDL2插件,用于进行视频过场播放。如果难以处理,可以将预处理定义宏中WITH_SMALLPOT删除。...在Linux下编译时则应优先考虑使用系统包管理器(例如apt等)自动安装库,在Mac下可以使用homebrew来安装。

    2.8K00

    (NDK编译)详解使用Android.mk编译CC++程序过程

    想要在Android设备上运行C/C++程序可执行文件,可采用一个方法就是使用NDK编译,很多时候要比gcc编译更适合,这里我采用是imx6q开发板上面装载了自己编写Android6.0.1镜像,在...1.准备文件 首先在新建一个文件夹中,放置自己编写两个文件,一个是C语言程序,一个是Android.mk,C语言程序内容可以由自己决定,符合标准即可。...LOCAL_SRC_FILES := test_app.c LOCAL_SRC_FILES变量必须包含将要编译打包进模块中CC++源代码文件。...Android.mk文件中即可 完整Android.mk代码 给出完整Android.mk代码,由于我C文件叫做test_app.c,所以想要直接使用需要把下面代码中test_app换为自己电脑上C...程序文件名称即可。

    2.8K20

    程序源代码】《金庸群侠传》C++复刻版

    关键字:《金庸群侠传》C++复刻版 这是一个以SDL2为基础实现2D游戏框架,同时相当于提供了一个使用该框架制作DOS游戏《金庸群侠传》移植版范例。...Windows下可以使用Visual Studio编译,其他系统下可以在src目录使用CMake生成Makefile,使用GCC或Clang编译,需至少支持C++14。...3、run过程参数为一个布尔值,如果为true则会被加入到root并进行绘制,如果为false则只运行参与绘制。...三:视频 这是作者编写一个视频播放器,可以将其编译为动态库,作为SDL2插件,用于进行视频过场播放。如果难以处理,可以将预处理定义宏中WITH_SMALLPOT删除。...在Linux下编译时则应优先考虑使用系统包管理器(例如apt等)自动安装库,在Mac下可以使用homebrew来安装。

    1.7K00

    【开发环境】Windows 系统中使用 Makefile 构建脚本编译 C 程序 ( 下载并安装 TDM-GCC 编译器 | 配置环境变量 | 编译 Makefile 程序 )

    文章目录 一、下载 TDM-GCC 编译器 二、安装 TDM-GCC 编译器 三、配置环境变量 四、根据 Makefile 脚本编译 C 程序 一、下载 TDM-GCC 编译器 ---- 下载并安装 TDM-GCC...tdm-gcc/articles/2021-05/10.3.0-release 页面 , 下载中间 tdm64-gcc-10.3.0-2.exe 文件即可 ; 下载后 tdm64-gcc-10.3.0...双击上述安装文件 , 选择 " Create " 选项 ; 选择第二个版本 ; 设置安装位置 : 选择安装组件 , 默认即可 ; 等待安装完毕 ; 三、配置环境变量 ---- TDM-GCC 安装后...bin 目录如下 ; 将上述 bin 目录 D:\001_Develop\020_TDM-GCC-64\bin 配置到环境变量中 ; 这个环境变量是安装完毕后自动配置进去 ; 四、根据 Makefile...脚本编译 C 程序 ---- 使用如下命令编译程序 : mingw32-make -f Makefile.mingw

    2.6K10

    编译原理词法分析程序c语言_编译器常用语法分析方法

    引言 前面已经介绍了编译预处理,词法分析,词法分析器实现,也在其中说到了语法分析任务和过程。...5.1实验描述 编制一个递归下降分析程序,实现对词法分析程序所提供单词序列语法检查和结构分析。 利用C语言编制递归下降分析程序,并对简单语言进行语法分析。...5.1.1 待分析简单语言语法 用扩充BNF表示如下: ⑴::=beginend ⑵::={ ;} ⑶::= ⑷::=...输入 x:=a+b*c end # 输出 error 5.2 C语言代码实现 核心思想就是,从开始状态开始,按照文法展开式,逐级进行状态分析,直到分析完毕,如果在此期间出现状态匹配,即语法错误,...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    72820

    使用SDL2显示一张图片,SDL2上手贴

    主要需要说明有两点,但其实跟这段代码并没有直接关系,而是有关在众多绘图技术、架构、方案中,SDL处于一个什么位置: 1.首先是绘图哲学,使用过OpenGL及Direct3D看这些代码应当陌生,...通常使用GUI绘图,大概是这样一个逻辑,请看伪代码: 准备画板(); 画一个点(x,y); 画一条线(x1,y1,x2,y2,c); 画一个圆(x,y,r,c); 贴一张图(x,y,w,h,bmp);...回到今天主题。上面的代码在编译时候,因为使用SDL2/SDL_image两个额外附加库,所以在编译、执行代码之前,首先要安装这两个软件库。...编译代码使用: gcc -o sdlpng sdlpng.c $(pkg-config --cflags --libs sdl2_image) 后面$(pkg-config --cflags --libs...sdl2_image)意思是,将sdl2_image代码库及其依赖库(这里当然就是sdl2库)编译参数和引用库参数全部显示出来,作为字符串加入到编译命令中去。

    1.7K70

    linux下编译自己第一个C程序

    首先,你需要有gcc编译器,如果没有执行下面的命令下载 apt-get install gcc 这个执行c程序 apt-get install g++...这个就可以执行c++程序了 gcc编译c++程序的话也可以,只要在gcc命令后面加上 -lstdc++ ,指定使用c++库 然后就可以创建一个hello.c程序,内容如下 ?...gcc hello.c 编译hello.c文件,然后会在同目录下生成一个a.out,windows下是a.exe,linux下是a.out gcc hello.c -o hello.c.../a.out 编译常用选项 -c 只激活预处理,编译和汇编,生成 .o 目标代码文件 -S 只激活预处理和编译,生成扩展名为 .s 汇编代码文件 -E 只激活预处理...,并将结果生成标准输出 -g 为调试程序(gdb)生成信息 -O 常用编译优化选项 -Wall 打开一些很有用警告选项,建议编译时加上此选项 ?

    1.2K20
    领券