一起学习写linux游戏系列(2)

开始之前,我先假设以下几点:
1.你已经会用一个文本编辑器了,不管是哪一个,vim,gedit,kate等等的。
2.你了解C语言的基本知识了,函数,数据类型,等等
然后我们就开始讲点你还不太了解,我也是正在了解的内容。
首先,你用的是一个linux,你打开一个终端,输入gcc -v 这个命令。
我这里的输出是:
使用内建 specs。
目标:i386-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-cpu=generic --host=i386-redhat-linux
线程模型:posix
gcc 版本 4.1.2 20070925 (Red Hat 4.1.2-33)

我的gcc 版本是4.1.2,实际上我fedora 8自带的版本。
你如果没有类似的输出,你需要安装先 gcc。
然后我们再来看看你的sdl,也就是我们马上要用到的游戏开发库的安装情况。
输入这样的命令:
 sdl-config --version
我的输出是:
1.2.13
这是我的sdl库的版本号,如果你没有这个库,你就要安装sdl,sdl-devel这样的包了。
如果你的数字跟我的不一样,问题倒是不大。只要是1.2.**就好了
先来学习一下gcc:
[robin@bogon ~]$ gcc --help
用法:gcc [选项] 文件...
选项:
  -pass-exit-codes         在某一阶段退出时返回最高的错误码
  --help                   显示此帮助说明
  --target-help            显示目标机器特定的命令行选项
  (使用‘-v --help’显示子进程的命令行参数)
  -dumpspecs               显示所有内建 spec 字符串
  -dumpversion             显示编译器的版本号
  -dumpmachine             显示编译器的目标处理器
  -print-search-dirs       显示编译器的搜索路径
  -print-libgcc-file-name  显示编译器伴随库的名称
  -print-file-name=<库>    显示 <库> 的完整路径
  -print-prog-name=<程序>  显示编译器组件 <程序> 的完整路径
  -print-multi-directory   显示不同版本 libgcc 的根目录
  -print-multi-lib         显示命令行选项和多个版本库搜索路径间的映射
  -print-multi-os-directory 显示操作系统库的相对路径
  -Wa,<选项>               将逗号分隔的 <选项> 传递给汇编器
  -Wp,<选项>               将逗号分隔的 <选项> 传递给预处理器
  -Wl,<选项>               将逗号分隔的 <选项> 传递给链接器
  -Xassembler <参数>       将 <参数> 传递给汇编器
  -Xpreprocessor <参数>    将 <参数> 传递给预处理器
  -Xlinker <参数>          将 <参数> 传递给链接器
  -combine                 将多个源文件一次性传递给汇编器
  -save-temps              不删除中间文件
  -pipe                    使用管道代替临时文件
  -time                    为每个子进程计时
  -specs=<文件>            用 <文件> 的内容覆盖内建的 specs 文件
  -std=<标准>              指定输入源文件遵循的标准
  --sysroot=<目录>         将 <目录> 作为头文件和库文件的根目录
  -B <目录>                将 <目录> 添加到编译器的搜索路径中
  -b <机器>                为 gcc 指定目标机器(如果有安装)
  -V <版本>                运行指定版本的 gcc(如果有安装)
  -v                       显示编译器调用的程序
  -###                     与 -v 类似,但选项被引号括住,并且不执行命令
  -E                       仅作预处理,不进行编译、汇编和链接
  -S                       编译到汇编语言,不进行汇编和链接
  -c                       编译、汇编到目标代码,不进行链接
  -o <文件>                输出到 <文件>
  -x <语言>                指定其后输入文件的语言
                           允许的语言包括:c c++ assembler none
                           ‘none’意味着恢复默认行为,即根据文件的扩展名猜测
                           源文件的语言

以 -g、-f、-m、-O、-W 或 --param 开头的选项将由 gcc 自动传递给其调用的
 不同子进程。若要向这些进程传递其他选项,必须使用 -W<字母> 选项。

报告程序缺陷的步骤请参见:
<URL:http://bugzilla.redhat.com/bugzilla>.
我靠,这么多选项,请不要沮丧,其实我们要用到的还没有那么多。
我可以证明,一个选项都不用就可以编译成功一个完好的程序。
是啊,我们开始写一些代码吧,这个不是在讲程序设计吗?
新建一个 helloworld.c吧,你应该会写吧,一个最简单的程序,跟gcc说hello吧!
#include <stdio.h>
int main()
{
    printf("Hello,linux and gcc!");
    return 0;
}
保存这个文件,然后回到终端,运行这个命令:
gcc helloworld.c
只给出了一个文件名。
实际上,这样的情况下,如果编译成功了,你会在当前目录下找到一个a.out这样的文件。
用命令 ./a.out 来运行一下看看。
应该会在终端显示 Hello,linux and gcc! 很简单,这就够了。
你会发现,这样有个问题,就是每次的程序都是a.out这样的名字,奇怪吧,你要用到一个选项了。
-o <文件>                输出到 <文件>
也就是说,你可以指定输出的程序的名字。
gcc -o hello helloworld.c
试试看。
然后如果你成功了,那么运行 ./hello 应该还是一样的效果。
下次我们开始讲到 sdl,第一个sdl程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值