虽然不能在我的操作系统中使用printf函数,去可以使用sprintf函数得到需要显示的字符串,并将字符串我的drawstring函数显示在界面。但是在这里使用sprintf函数并像普通C应用程序一样连接成可执行文件。sprintf在stdio.h声明,在libc.lib里实现。我需要在ld连接的时候加入libc.lib库文件。问题是我的程序不能使用cygwin的libc.lib。我不得不重新编译这些源文件。
参照《OS自作入门》中选择的标准库源文件列表,我重新编译了如下程序:
abs.c
atof.c
atoi.c
errno.c
frexp.c
ldexp.c
memchr.c
memcmp.c
memcpy.c
memmove.c
memset.c
qsort.c
sprintf.c
strcat.c
strchr.c
strcmp.c
strcpy.c
strcspn.c
strdup.c
strlen.c
strncat.c
strncmp.c
strncpy.c
strpbrk.c
strrchr.c
strspn.c
strstr.c
strtol.c
strtoul.c
strtoul0.c
vsprintf.c
编译libc.lib函数库的Makefile内容如下:
TARGET = libc
OBJS = abs.o atof.o atoi.o errno.o frexp.o ldexp.o \
memchr.o memcmp.o memmove.o memset.o qsort.o \
sprintf.o strcat.o strcmp.o strcpy.o strcspn.o strdup.o \
strlen.o strncat.o strncmp.o strncpy.o strpbrk.o strrchr.o \
strspn.o strstr.o strtol.o strtoul.o strtoul0.o vsprintf.o
MAKE = make -r
CC1 = gcc
LD = ld
ALL :
$(MAKE) $(TARGET).lib
%.o : %.c Makefile
$(CC1) $*.c -c
$(TARGET).lib : $(OBJS) Makefile
ar r $@ $(OBJS)
clean :
-$(DELE) *.o
-$(DELE) $(TARGET).lib
这样我就可以在bootpack.c里使用sprintf函数。
#include <stdio.h>
…
#define MAX_VERSION 1
#define MIN_VERSION 0
…
char *str="Colimas Version";
char s[40];
sprintf(s,"%s %d.%d",str,MAX_VERSION,MIN_VERSION);
drawstring(binfo->vram, binfo->scrnx, 18, 10, COL8_FFFFFF, s);
在Makefile里只需要修改一下LD部分
$(LD) $(LDFLAGS) bootpack.o func.o hankaku $(LIB)/libc.lib -o bootpack.bin
运行结果:
分享到:
相关推荐
在易语言中,“取环境变量值”是一个常见的操作,这涉及到操作系统环境变量的获取,这些变量通常存储着系统配置信息,如路径、用户设置等。 环境变量在计算机系统中扮演着重要角色,它们是操作系统中的一类动态存储...
1. **GetEnvironmentVariable()**: 这个方法允许你根据变量名获取特定的环境变量值。例如,获取系统路径可以这样写: ```csharp string systemPath = Environment.GetEnvironmentVariable("PATH"); ``` 2. **...
1. **PATH**:这是最常用的环境变量,包含了操作系统搜索可执行文件的默认路径列表。当我们在命令行中输入一个命令时,系统会按照PATH变量中的顺序依次查找相应的程序。 2. **USERPROFILE**:这个变量指定了当前用户...
在IT领域,尤其是在Linux操作系统中,环境变量扮演着至关重要的角色。环境变量是操作系统中用于存储信息的变量,这些信息可以影响程序的执行环境。在CentOS7中,理解和设置环境变量是系统管理员和开发人员的基本技能...
《C#个人财务管理系统》是一款基于C#编程语言开发的软件,主要用于个人财务管理,帮助用户进行收支记录、预算设定、财务分析等操作。系统包含了完整的源码和开发文档,为学习C#编程以及财务管理系统设计提供了宝贵的...
环境变量是在操作系统中用来存储各种系统配置和用户自定义设置的一种数据结构。它们通常是键值对的形式,其中键代表变量的名字,而值则表示变量的实际内容。环境变量可以在整个系统级别或者单个用户的层面上设置,...
1. **下载与安装JDK**: 首先,访问Oracle官网下载适合你操作系统的JDK版本。安装过程中,通常可以选择自动设置环境变量,但为了更好地控制和理解环境,建议手动设置。 2. **设置JAVA_HOME**: 在系统环境变量中新建...
- **定义**: `PATH` 变量包含了操作系统查找可执行文件的路径列表。 - **设置方法**: - 在“系统变量”区域找到`PATH`变量并点击“编辑”。 - 添加`%JAVA_HOME%\bin` 和 `%JAVA_HOME%\jre\bin` 至变量值末尾。确保...
请注意,根据不同的操作系统和个人偏好,实际的安装路径可能会有所不同。 #### 三、配置步骤 ##### 1. 设置JAVA_HOME - **目标**:定义JDK的安装路径。 - **操作**: - 打开“我的电脑”,右键点击选择“属性”...
本文将详细介绍如何在Windows 7操作系统下配置JDK环境变量,并指出配置过程中需要注意的关键问题。 #### 二、配置步骤 ##### 1. 安装JDK 首先,需要在计算机上安装JDK。以JDK 1.7为例,确保下载并安装最新版本的...
环境变量在Windows操作系统中扮演着至关重要的角色,它们为应用程序提供了关于系统配置、用户设置以及系统路径等关键信息。通过对这些环境变量的理解和利用,可以更有效地管理和配置系统。 #### 1. `%...
环境变量是一种系统级别的设置,用于存储操作系统或程序在运行时需要的一些基本信息,比如路径、库的位置等。对于Java开发者而言,正确的环境变量配置是确保Java程序能够顺利编译和运行的关键。 #### 一、Java环境...
环境变量是在操作系统环境中定义的一系列特殊变量,用于存储特定于用户或系统的路径和其他数据。在Windows操作系统中,环境变量通常通过“我的电脑”属性中的“高级”选项进行设置。 #### JDK环境变量设置步骤详解 ...
首先,你需要下载适合你操作系统的Java Development Kit (JDK)。JDK包含了编译、调试和运行Java程序所需的所有工具。你可以从Oracle官网获取最新版本的JDK安装包。 安装JDK的过程相对简单,只需按照安装向导的提示...
- **Linux**:一种类Unix的操作系统,广泛应用于服务器领域。 - **目录与文件管理**:Linux中通过一系列命令进行目录与文件的操作。 #### 命令介绍 1. **pwd (Print Working Directory)**:显示当前工作目录。 2. *...
- 在“系统变量”区域点击“新建”,输入变量名`JAVA_HOME`,变量值为JDK的安装路径,例如:`E:\Java\jdk1.6.0_02`。 - 点击“确定”保存设置。 - **Linux或macOS系统**: - 编辑`/etc/profile`文件(或`~/.bash...
本文主要探讨了个人在使用ArcGIS API进行开发时的一些接口使用心得,涵盖了数据结构、几何对象、数据访问和地图操作等多个方面。以下是对各接口的详细说明: 1. **IField接口(esriGeoDatabase)**:该接口用于定义...
1. **Windows操作系统**:Windows是由微软公司开发的最广泛使用的个人计算机操作系统。其特点包括图形化用户界面直观易用,支持大量的应用程序,拥有丰富的多媒体功能。然而,Windows系统在安全性、稳定性和开源性...
《C语言程序设计之个人账簿管理系统》 个人账簿管理系统是使用C语言编写的一款实用软件,主要用于管理个人财务收支情况。系统的核心功能包括数据录入、查看、修改、查询、排序以及删除,提供了完整的个人财务管理...