Ⅰ c语言有静态编译吗
你说的是库吧,不是头文件,头文件没关系,
如果要静态编译,使用gcc的话,只要加上-static选项就行了
Ⅱ 手机能否装C语言编译器
可以装,不过需要安卓手机。
安装步骤如下:
1、我们打开谷歌应用商店。在搜索框里输入mobile c查找应用程序。下载并安装好
6、可以看到这里正确的输出了Hello World字符串。
Ⅲ 别踩白块c语言程序编译
只是禅模式的,如果是学习用的,知道一个模式的应该其他也会了,如果是想玩的话下正版吧= =
#include "SDL2/SDL.h"
#include "SDL2/SDL_ttf.h"
#include<string.h>
// 使用的头文件
int W; // 窗口宽
int H; // 窗口高
int PH; // 游戏区的高
int i, df = 0; // 定义的变量
char sorry[] = "游戏不适合你的手机", win[9] = "You win!", lose[10] =
"You lose", str[19] = "得分:";
Uint32 began = 0;
float time = 0.0; // 定义的计时变量
bool quit = false; // 退出标志
float X = 0, Y = 0; // 用于获取触控位置的坐标
SDL_Event event;
// 定义一个事件
SDL_Window *w = NULL; // 创建一个窗口指针
SDL_Renderer *ren = NULL; // 创建一个渲染器指针
SDL_Surface *sur = NULL; // 表面
SDL_Surface *sur1 = NULL; // 得分表面
SDL_Surface *text = NULL; // 标题文本区表面
SDL_Texture *tex = NULL; // 画刷
SDL_Texture *tex1 = NULL; // 画刷
SDL_Texture *tex2 = NULL; // 画刷
TTF_Font *font = NULL; // 定义一个字体
SDL_Color color, fontcolor; // 定义字体颜色
SDL_Rect rect[4]; // 屏幕出现的四个黑块
SDL_Rect title; // 标题区
SDL_Rect pp, over;
void change(); // 使方块动起来
void init(); // 启动sdl及相关
void draw(); // 画图
void start(); // 初始化相关数据
void end(); // 游戏结尾
int main(int argc, char **argv)
{ // 主函数
init();
start();
began = SDL_GetTicks(); // 得到开始时间
while (quit == false)
{
draw(); // 画图
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_FINGERDOWN:
X = event.tfinger.x * W;
Y = event.tfinger.y * H;
// 获取x,y的坐标
if (Y > rect[0].y)
if ((X > rect[0].x) && (X < (W / 4 + rect[0].x))) // 判断坐标
{
change();
df = df + 1;
}
else // 如果触屏位置不对
{
quit = true;
if (df < 3)
sur1 = TTF_RenderUTF8_Blended(font, sorry, color);
else
sur1 = TTF_RenderUTF8_Blended(font, lose, color);
}
break;
case SDL_FINGERUP:
break;
default:;
}
if (df > 100) // 如果在30秒内得分超过100
{
quit = true;
sur1 = TTF_RenderUTF8_Blended(font, win, color);
}
}
time = 30 - ((SDL_GetTicks() - began) / 1000); // 计算剩余时间
if (time == 0.0) // 当时间结束
{
quit = true;
sprintf(str, "时间到,得分:%d", df);
sur1 = TTF_RenderUTF8_Blended(font, str, color);
}
}
tex1 = SDL_CreateTextureFromSurface(ren, sur1); // 把表面转换成画刷
SDL_RenderCopy(ren, tex1, NULL, &over);
SDL_RenderPresent(ren);
SDL_Delay(3000); // 暂停3秒
end();
return 0;
}
void change()
{
for (int i = 0; i < 3; i++)
rect[i].x = rect[i + 1].x;
rect[3].x = (random() % 4) * W / 4; // 最上层产生随机的黑块
}
void init()
{
SDL_Init(SDL_INIT_EVERYTHING);
w = SDL_CreateWindow("别踩白块儿", 0, 0, W, H, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_BORDERLESS); // 配置窗口参数并创建
//
//
ren = SDL_CreateRenderer(w, -1, SDL_RENDERER_PRESENTVSYNC); // 为创建的窗口配置渲染器
TTF_Init(); // 启动font
font = TTF_OpenFont("/system/fonts/DroidSansFallback.ttf", 60); // 打开系统自带字体并设置大小为60
}
void draw()
{
sur = SDL_CreateRGBSurface(0, W, H, 32, 0, 0, 0, 0); // 先把表面刷白
SDL_FillRect(sur, NULL, 0xffffff);
for (int i = 0; i < 4; i++)
SDL_FillRect(sur, &rect[i], 0x00000); // 再把黑块逐个贴上表面
tex = SDL_CreateTextureFromSurface(ren, sur); // 把表面转换成画刷*/
sprintf(str, "得分:%d", df);
sur1 = TTF_RenderUTF8_Blended(font, str, color);
tex1 = SDL_CreateTextureFromSurface(ren, sur1); // 把表面转换成画刷
sprintf(str, "时间:%.2f\"", time);
text = TTF_RenderUTF8_Blended(font, str, fontcolor);
tex2 = SDL_CreateTextureFromSurface(ren, text); // 把表面转换成画刷
SDL_RenderCopy(ren, tex, NULL, NULL);
SDL_RenderCopy(ren, tex2, NULL, &title);
SDL_RenderCopy(ren, tex1, NULL, &pp);
SDL_RenderPresent(ren);
SDL_FreeSurface(sur);
SDL_DestroyTexture(tex);
SDL_FreeSurface(sur1);
SDL_FreeSurface(text);
SDL_DestroyTexture(tex1);
SDL_DestroyTexture(tex2);
}
void start()
{
SDL_GetWindowSize(w, &W, &H); // 得到屏幕分辨率
PH = H * 7 / 8;
color =
{
255, 215, 0};
fontcolor =
{
0, 0, 0}; // 字体颜色赋值
float a = PH * 3 / 4 + H / 8;
float wight = W / 4;
float hight = PH / 4;
rect[0].x = 0;
rect[0].y = a;
rect[1].x = wight;
rect[1].y = a - hight;
rect[2].x = wight * 2;
rect[2].y = a - 2 * hight;
rect[3].x = 3 * wight;
rect[3].y = a - 3 * hight;
for (int i = 0; i < 4; i++)
{ // 为黑块的高和宽赋值
rect[i].h = hight;
rect[i].w = wight;
}
title =
{
1.10, 0, W / 2, W / 8};
pp =
{
W / 2, 0, W / 2, W / 8};
over =
{
0, H / 4, W, H / 4};
}
void end()
{
TTF_CloseFont(font);
TTF_Quit();
Ⅳ C语言编译问题 静态链接
静态链接相当于你把静态库也加到二进制文件里面去了。动态的话,只是指明了需要什么动态库,这个库在什么位置。你换一台机器的话,编译静态库的二进制文件是可以执行的。动态库的二进制文件则需要对应目录有需要的动态库才可以执行。多个程序都编译同一个静态库,那么多个二进制文件执行时都需要加载静态库这部分代码。如果是动态库,那么多个二进制文件只需要在内存里面有一份这个动态库部分的代码。
Ⅳ c语言中的函数可不可以单独进行编译
是可以的。
库函数是把函数放到库里,供别人使用的一种方式。函数库是由系统建立的具有一定功能的函数的集合。库中存放函数的名称和对应的目标代码,以及连接过程中所需的重定位信息。用户也可以根据自己的需要建立自己的用户函数库。
使用C语言的语句直接计算sin或cos函数,就需要编写颇为复杂的程序。因为C语言的语句中没有提供直接计算sin或cos函数的语句。又如为了显示一段文字,我们在C语言中也找不到显示语句,只能使用库函数printf。
(5)c语言sdl2静态编译扩展阅读
函数库的分类
1、字符串、内存和字符函数
需要的包含文件:string.h、mem.h、ctype.h或string.h;
2、数学函数
需要的包含文件:math.h;
3、动态存储分配
需要的包含文件:alloc.h或stdlib.h ;
Ⅵ LINUX下要在C中嵌入Python,编译的时候怎样解决库的连接问题
gcc编译时,当使用动态库编译可以按照几种写法1.gcctest.c./libSDL2-2.so2.gcctest.c-lSDL2-23.gcctest.c-L/home/test-lSDL2-2一般的编译参数都是按照2或3去写2写法的含义是从/lib或者/usr/lib目录下寻找名称为SDL2-2的库,即寻找/lib/libSDL2-2.so或者/usr/lib/libSDL2-2.so文件进行链接,当然如果没有动态库就会去找静态库,再没有应该就会在编译时报错3写法的含义是从-L参数首先从指定的目录中寻找需要链接的库文件,随后再去寻找系统文件夹中是否存在需要的库1写法的含义是将当前目录下的./libSDL2-2.so.0文件链接进最终文件,因此执行readelf-aa.out后在动态库部分所看到的路径就是./libSDL2-2.so.0,进而在执行文件时仅会从当前目录下寻找libSDL2-2.so.0文件,当执行文件时所在的目录下没有该文件时就会出现找不到库文件的操作你第二次操作时,因为function.so库文件与a.out文件在同一个目录,同时也是在该目录下执行的ldd操作及运行a.out,a.out在加载动态库时从当前目录下找到了所需要的库文件,此时能够执行成功(ldd命令实质是一个脚本,通过设置环境变量运行动态库链接器来输出所有待链接的动态库)。你可以试试将a.out拷贝至其他目录再次运行,将出现和第一次操作时一样的现象,找不到function.so文件。具体的解决方法就是修改编译参数,将./libSDL2-2.so.0修改为-lSDL2-2并将libSDL2-2.so.0文件拷贝至/usr/lib目录下,并且可能因为没有修改链接器的缓存文件(将可能找不到带版本号后缀的动态库),需要在/usr/lib目录下建立一个文件连接(ln-slibSDL2-2.so.0libSDL2-2.so)或者直接修改名称为libSDL2-2.so
Ⅶ 手机c语言编程软件哪个好
C4droid中文版可以说是款Android设备上的最强的 C/C++ IDE,支持多种图形库: SDL、SDL2 (需安装sdl plugin for c4droid)、QT(需安装CuteLoadear)等,还支持导出APK!
Ⅷ 求一个用sdl2和c语言写的简易计算器的代码,只要加减乘除就行!万分感谢!!!!
#include<stdio.h>
void main(){
double a,c;char b;
printf("请输入要运算的数字😎\n");
scanf("%lf%c%lf",&a,&b,&c);
if(b=='+')
printf("%.2lf%c%.2lf=%.2f\n",a,b,c,a+c);
else
if(b=='-')
printf("%.2lf%c%.2lf=%.2lf\n",a,b,c,a-c);
else
if(b=='x')
printf("%.2lf%c%.2lf=%.2lf\n",a,b,c,a*c);
else
if(b=='/')
printf("%.2lf%c%.2lf=%.2lf\n",a,b,c,a/c);
else printf("请输入正确的数字\n");
}