Cb编译器的安装和使用——《自制编译器》
下载Cb编译器
- 网址:http://www.ituring.com.cn/book/1308,点击右侧随书下载,即可下载cbc-1.0.tar.gz
安装Cb编译器
-
将cbc-1.0.tar.gz复制到虚拟机中,并解压;
-
如果对虚拟机有root权限,直接进入cbc文件夹下,运行脚本文件./install.sh即可;
tar xzf cbc-1.0.tar.gz cd cbc-1.0 su ./install.sh
-
如果对虚拟机没有root权限,或者不想用root权限安装,进入cbc文件夹下后,先修改install.sh文件,将首行的
prefix="${1:-/usr/local/cbc}"
修改为自己可访问的目录,比如prefix="/home/IC/cbc"
,再运行脚本文件; -
运行脚本完成后,cbc已经安装在相应的文件夹下;
测试Cb编译器
-
编写Cb程序文件 hello.cb:
import stdio; int main (int argc,char **argv){ printf("Hello, World!\n"); return 0; }
-
利用编译器编译程序,需要指明cbc的位置:
/home/IC/cbc/bin/cbc hello.cb
-
编译的时候会报错,报错的信息如下:(在保证程序没有错误的前提下)
hello.s: Assembler messages: hello.s:9: Error: suffix or operands invalid for `push' hello.s:12: Error: suffix or operands invalid for `push' hello.s:19: Error: suffix or operands invalid for `pop' cbc: error: as failed. (status 1) cbc: error: compile error
-
解决办法,由于本人的系统是64位的,而汇编代码是32位的,参考博客:https://blog.csdn.net/jackailson/article/details/82192273?utm_source=blogxgwz6
as hello.s -o hello.o gcc hello.o -o hello ./hello
-
运行时仍然会报错,报错的信息如下:
Segmentation fault
-
应该是由于Cbc太老旧了,在新机器上不适用,不太容易解决了,坑抽空再填上吧!