Libchecker:Компиляция проверяющих программ
Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/libchecker:Компиляция проверяющих программ
При компиляции проверяющих программ, использующих библиотеку libchecker необходимо указывать опции компилятора, задающие пути к заголовочным файлам, пути к исполняемым файлам и т. п. Для этой цели рекомендуется использовать программу ejudge-config, передавая ей опции --cflags, --ldflags, --libs.
Опция --cflags вызывает печать на стандартный поток вывода опций компилятора, указывающих путь к заголовочным файлам библиотеки libchecker. Опция --ldflags вызывает печать на стандартный поток вывода опций компилятора, указывающих пути к библиотечным файлам libchecker. Наконец, опция --libs вызывает печать на стандартный поток вывода имен необходимых библиотек.
Таким образом, строка компиляции проверяющей программы может выглядеть следующим образом:
gcc ‘${prefix}/bin/ejudge-config --cflags --ldflags‘ check_A.c \ -o check_A ‘${prefix}/bin/ejudge-config --libs‘
Здесь ${prefix} должен быть заменён на корень инсталляции системы ejudge. Если каталог ${prefix}/bin добавлен в переменную PATH, вместо ${prefix}/bin/ejudge-config можно просто писать ejudge-config.
Аналогичным образом может быть написан Makefile:
EJUDGE_CONFIG = ${prefix}/bin/ejudge-config CC = gcc LD = gcc CFLAGS = $(shell $(EJUDGE_CONFIG) --cflags) LDFLAGS = $(shell $(EJUDGE_CONFIG) --ldflags) LDLIBS = $(shell $(EJUDGE_CONFIG) --libs) all : check_A check_A : check_A.o check_A.o : check_A.c
Здесь ${prefix} также должен быть заменён на корень инсталляции системы ejudge.
Если для создания и настройки турниров используется веб-редактор настроек турниров в программе serve-control, то все проверяющие программы могут быть скомпилированы автоматически при выполнении команды “Check contest settings”. При этом корректные опции компилятора будут указаны автоматически.