仅针对已提供支持的语言,这些语言都已经在最新版中写好了相关调用代码,对于其中的绝大部分,最多只需安装一个编译器即可在OJ上运行。
如需添加其它语言,请参考官方wiki:AddProgrammingLanguage.wiki
先确认/home/judge/etc/judge.conf 文件最先面的 OJ_LANG_SET 中有没将你想要添加的语言编号加进去(对应编号已在下面给出)。确认好之后就可以安装这些语言了。
C:(编号0)
无需安装,ubuntu自带gcc。如需更新:
sudo apt-get install gcc -y
C++:(编号1)
无需安装,ubuntu自带g++。如需更新:
sudo apt-get install g++ -y
Pascal:(编号2)
安装free pascal即可:
sudo apt-get install fpc -y
Java:(编号3)
安装jdk即可(此处为了方便,直接安装openjdk):
sudo apt-get install openjdk-7-jdk -y
Ruby:(编号4)
这个可能会遇到一点坑。首先要安装Ruby编译器:
sudo apt-get install ruby2.0 -y
(上面那条语句如果把ruby2.0换成ruby,可能会出问题,详情可自己试...)
如果装完后,在OJ里提交题目能正确输出,那么恭喜!你的ruby能正常使用了,如果不能,请继续往下看。
如果提交后提示运行错误(Run Time Error),且点进去后提示用了禁用的系统调用,可以通过添加系统调用的方式进行修正,添加系统调用可见 HUSTOJ添加系统调用
如果提交后提示答案错误(Wrong Answer),且点进去查看错误比对(需要在db_info.inc.php中开启,不会看错误比对的也可以通过测试运行查看自己的程序在OJ上编译后有没输出)后发现自己的程序没输出,则需要通过调试来追踪错误原因,调试方式如下:
在桌面创建一个Main.rb文件,将你的代码放进去。然后打开终端进入桌面文件夹用 ruby Main.rb 执行一下,若能正常输出结果,则说明ruby编译器没什么问题
接下来开始调试,在终端输入sudo judge_client run_id file_id /home/judge -debug (其中run_id为你需要调试的运行id,file_id为你需要把调试过程中产生的文件放在编号为几的run目录中),假设我需要测试运行编号为 6869 的提交,并将调试中产生的文件放到/home/judge/run0 目录下,并以此为例进行操作。
先输入
<pre class="plain" name="code">sudo judge_client 6869 0 /home/judge -debug
然后系统就会重判6869这个提交,这时你的user.out里应该什么都没有,可以打开error.out查看错误原因,如果提示找不到某个库文件,需要先在Ubuntu里搜索这个库:
find / -name filename (filename为缺失的那个库文件的名字),找到后记住目录位置,并在~/husoj/hustoj-read-only/core/judge_client/judge_client.cc 的copy_ruby_runtime函数中加入对应的mkdir和cp语句,这样在判题时就会将缺失的库复制到所运行的目录下了。修改完保存后别忘了了执行~/husoj/hustoj-read-only/core 目录下的 make.sh 重新编译下:
sudo bash ~/husoj/hustoj-read-only/core/make.sh
然后清空 /home/judge/run0 目录:
sudo rm /home/judge/run0/* -rf
重新进行调试:
sudo judge_client 6869 0 /home/judge -debug
如果还是缺少库,重复执行上一步,如果变成了“Failed to create timer thread (errno: 11)”,则在judge_client.cc中的大概1503行加入“Case 4:” ,如下图所示
保存退出后依旧别忘了重新编译下:
sudo bash ~/husoj/hustoj-read-only/core/make.sh
再次进行调试
sudo judge_client 6869 0 /home/judge -debug
如不出意外,此时查看error.out应该是RE了,如果是RE,则按照添加系统调用的步骤去添加缺失的callid,解决完RE后,整个问题应该也就解决了。
------------------------------------------------------------分割线---------------------------------------------------
调试过程中还可以使用chroot在run目录下模拟执行Main.rb协助调试:
sudo chroot /home/judge/run0
./ruby Main.rb
Bash:(编号5)
Ubuntu自带。如需更新:
sudo apt-get install bash -y
Python:(编号6)
Ubuntu自带。如需更新:
sudo apt-get install python -y
需要注意的是,若要系统支持python,需要每次启动ubuntu后手动启动一次judged,否则判题会答案错误。需要每次开机后在终端执行以下操作:
sudo pkill -9 judged
sudo judged
PHP:(编号7)
装HUSTOJ时一定会装的东西。如需更新:
sudo apt-get install php5 libapache2-mod-php5 -y
Perl:(编号8)
Ubuntu自带。如需更新:
sudo apt-get install perl -y
C#:(编号9)
装OJ时会自动装上MONO,因此可以直接使用。如需更新:
sudo apt-get install mono-gmcs -y
Objuctive-C:(编号10)
还未装好,先留个坑。
FreeBasic:(编号11)
未装,留个坑。
Scheme:(编号12)
未装,留个坑。
Lua:(编号15)
装上即可用:
sudo apt-get install lua5.2 -y
Swift:(编号16)
暂时还不支持。