Начало работы с GTKD
Я новичок в D и хочу поэкспериментировать с gtkd. Я нахожусь на арке Linux, и установил dmd2-complete
(дмд 2.0.56) и gtkd-svn
(gtkd построен против D2) пакетов. Я также проверил, что сам D работал правильно (скомпилировал и запустил writefln("hello world");
программа).
Теперь я пытаюсь запустить и запустить gtkd, и мне очень трудно компилировать и связывать основную программу helloworld из примеров.
import gtk.MainWindow;
import gtk.Label;
import gtk.Main;
void main(string[] args)
{
Main.init(args);
MainWindow win = new MainWindow("Hello World");
win.setDefaultSize(200, 100);
win.add(new Label("Hello World"));
win.showAll();
Main.run();
}
В частности, какие опции мне нужно передать в dmd, чтобы получить эту ссылку? Практически вся документация, которую я могу найти, полностью пропускает это.
gtkd-svn
пакет установил следующее в /usr/lib:
/usr/lib/libgtkd.a
/usr/lib/libgtkdgl.a
/usr/lib/libgtkdsv.a
4 ответа
Итак, я нашел ответ на боковой панели "связанные вопросы". Оставьте это здесь, так как Google не открывал другую ветку, когда я искал, и, возможно, с этим повезло больше. Вам нужно передать параметры компоновщика как -L-l
именно в этом случае
dmd -L-lgtkd -L-ldl hellogtk.d
и все работает хорошо.
dmd передает флаги компоновщику после флага -L.
Так что я не могу сказать наверняка, так как я не использовал gtkD, но что-то вроде -L-lgtkd должно сработать.
если нет, поэкспериментируйте с -L-lgtkdg1 и прочим... один из них обязательно будет прав.
Изменить: просто добавив дополнительную информацию... компоновщик будет автоматически искать /usr/lib и несколько других мест. Я полагаю, что действие компоновщика идентично процессу компоновки C, поэтому больше информации можно почерпнуть, посмотрев, как C связывает.
Я программирую на Gentoo и вручную компилирую dmd и gtkD.
Итак, в начале я набираю:
echo $PKG_CONFIG_PATH
Это ничего не дает мне.
Я делаю это: В ~/.bashrc:
( ... )
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
потому что есть все, что нам нужно.
Затем я набираю:
pkg-config gtkd-2 --cflags --libs
и вывод этого я копирую и вставляю в:/etc/dmd.conf
в раздел: "[Окружающая среда]"
к переменной: "DFLAGS" (в конце).
Чистая установка dmd и gtkD (путем копирования и вставки) должны выглядеть так:
(/etc/dmd.conf)
( ... )
[Environment]
DFLAGS=-I/usr/include/phobos2 -I/usr/include/druntime -L--no-warn-search-mismatch -L-- export-dynamic -L-lrt -I/usr/local/include/d/gtkd-2/ -L-L/usr/local/lib/ -L-lgtkd-2 -L-ldl
В настоящее время я могу скомпилировать мои программы на D так:
dmd myprog.d
Это все!
PS
Извините за мой английский.
Вы также можете использовать pkg-config:
dmd `pkg-config --cflags --libs gtk-2` hellogtk.d