Difference between revisions of "Libchecker:Компиляция проверяющих программ"
(Created page with "Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/[[libchecker:Компил...") |
|||
Line 1: | Line 1: | ||
− | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Проверяющие программы]]/[[libchecker]]/[[libchecker:Компиляция проверяющих программ]] | + | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Проверяющие программы]]/[[libchecker]]/[[libchecker:Компиляция проверяющих программ|Компиляция проверяющих программ]] |
При компиляции проверяющих программ, использующих библиотеку <tt>libchecker</tt> необходимо указывать опции компилятора, задающие пути к заголовочным файлам, пути к исполняемым файлам и т. п. Для этой цели рекомендуется использовать программу <tt>[[ejudge-config]]</tt>, | При компиляции проверяющих программ, использующих библиотеку <tt>libchecker</tt> необходимо указывать опции компилятора, задающие пути к заголовочным файлам, пути к исполняемым файлам и т. п. Для этой цели рекомендуется использовать программу <tt>[[ejudge-config]]</tt>, |
Latest revision as of 08:45, 24 February 2012
Навигация: Главная страница/Система ejudge/Проверяющие программы/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”. При этом корректные опции компилятора будут указаны автоматически.